首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fu
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fu
admin
2017-03-22
57
问题
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成构造函数的定义,请在注释//********1********后添加适当的语句。
(2)定义类的友元函数fun(),请在注释//********2********后添加适当的语句。
(3)定义类的友元函数main(),请在注释//********3********后添加适当的语句。
(4)补充语句,释放内存。请在注释//********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
Class TestClass
{
public:
//********1********
{
data=d;
next=NULL;
}
void SetNext(TestClass*p)
{
next=p;
}
private:
int data;
TestClass*next;
//********2********
//********3
};
TestClass*fun(TestClass*h)
{
TestClass *t,*s,*u,*v;
s=h->next;
h->next=NULL;
while(s!=NULL)
{
for(t=s,v=h;v!=NULL
&&v->data < t->data;u=v,v=
v->next);
s=s一>next;
if(v==h)
h=t;
else
u->next=v;
t->next=v;
}
return h;
}
Void main()
{
TestClass*h=NULL;
TestClass*q=NULL;
do{
int data;
cout<<"please input a
number,and end with 0"<
cin>>data;
if(data==0)break;
TestClass*p = new
TestClass(data);
if(h==NULL)
{
h=q=p;
}
else
{
q->SetNext(p);
q=p;
}
}while(1);
h=fun(h);
for(;h!=NULL;)
{
q=h->next;
cout<
data<<" "<
delete h;
//********4********
}
return;
}
选项
答案
(1)添加语句:TestClass(int d) (2)添加语句: friend TestClass*fun(TestClass*); (3)添加语句:friend void main(); (4)添加语句:h=q;
解析
(1)题目1要求“完成构造函数的定义”。构造函数是一种特殊的成员函数,它的名字必须与类同名,所以这里的构造函数名字是TestClass。根据构造函数内的“data=d;”语句,知道构造函数TestClass中参数d为int型,即这里补全“TestClass(int d)”。
(2)题目2要求“定义类的友元函数fun()”。在C++中,如果在本类以外的其它地方定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中fun()在类TestClass以外的地方定义的,为了其实现对类TestClass中程序变量的调用,在类TestClass中补全“friend TestClass*fun(TestClass*);”。
(3)题目3要求“定义类的友元函数main()。”同(2),这里补全“friend void main();”。
(4)题目4要求“补充语句,释放内存。”为了防止内存泄漏,在指针使用后要将其释放。第四个标识前面的“delete h;”语句已经将指针h释放了,所以要释放指针q,只要将其指向h就可以了,即“h=q;”。
转载请注明原文地址:https://www.kaotiyun.com/show/E2Ap777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下程序:#include#includeusingnamespacestd;intmain(){intS[]={123,234};cout
有如下模板声明:templateclassA;下列声明中,与上述声明不等价的是
有如下两个类定义:classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一个成员变量的定义是错误的,这个变量是
将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是()。
软件(程序)调试的任务是()。
下列数据结构中,能直接使用堆排序法进行排序的是
若有以下程序:#include<iostream>usingnamespace.std;classdata{public:intx;data(intx){
已知函数f的原型是:voidf(int*a,long&b);,变量v1、v2;的定义是intv1;longv2;正确,的调用语句是
下列叙述中正确的是
在软件生存周期中,不属于软件开发阶段的是( )。
随机试题
提示高热病人退热期可能发生虚脱的表现是
下列费用中属于资金使用成本的有()。
核黄素缺乏可出现以下哪些症状?()[辽宁省2007年11月四级真题]
已知向量a=(sinθ,-2)与b=(1,cosθ)互相垂直,其中θ∈(0,),求sinθ和cosθ的值。
下列属于无效合同的是()。
“大学遗憾”是“过来人”的人生体验。我们为当初的“遗憾”而唏嘘不已,我们希望用我们的“前车之鉴”来给新生们提个醒儿。这些心意都是好的。然而,我们无法将我们的大学体验直接移植给正在踌躇满志的新生,我们也无法替代他们筹划他们的大学生活。大学生活本就是一种生活体
构建社会主义和谐社会的根本出发点和落脚点是()。
毛泽东曾指出:“中国反帝反封建的资产阶级民主革命,正规地说起来,是从孙中山先生开始的。”这表明
中国同盟会的政治纲领初步描绘出中国还不曾有过的资产阶级共和国方案,它的提出,对推动革命的发展产生了重大而积极的影响。对这一纲领理解正确的有
TheAmericanbabyboommadeunconvincingU.S.advicetopoorcountriesthattheyrestraintheirbirths.【C1】______,therehash
最新回复
(
0
)