首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fun(),请在注释
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fun(),请在注释
admin
2019-06-05
54
问题
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成构造函数的定义,请在注释//********1********后添加适当的语句。
(2)定义类的友元函数fun(),请在注释//********2********后添加适当的语句。
(3)定义类的友元函数main(),请在注释//********3********后添加适当的语句。
(4)补充语句,释放内存。请在注释//********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include<iostream.h>
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 with0"<<endl;
cin>>data;
if(data==0)break;
TestClass* p=newTestClass(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<<h->data<<" "<<endl;
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://kaotiyun.com/show/q18p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
设程序如下:#include<iostream>usingnamespacestd;intmain(){int**p,*q,r=10;q=&r;p=&q;cout<<**p+1<<en
A、 B、 C、 D、 B对二叉树的访问有3种方式,其中任意的两种可惟一确定一颗二叉树。但无论是前序、后序还是中序遍历二叉树时,其区别在于访问根的先后次序不同,而访问叶结点的顺序完全相同。
下列程序的输出结果为-5/8-3/4,请将横线处的缺失部分补充完整。#include<iostream>usingnamespacestd;classFraction{//"分数"类public:Fractio
下列程序的输出结果为12.324.6,请将横线处的缺失部分补充完整。#include<iostream>usingnamespacestd;classBase{public:Base(intA):id
下列关于析构函数的描述中,错误的是()。A)析构函数可以重载B)析构函数由系统自动调用C)每个对象的析构函数只被调用一次D)每个类都有析构函数
Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是()。A)cppB)exeC)objD)lik
下列程序运行时的输出结果是______。#include<iostream>usingnamespacestd;voidXfun(int&,int&);intmain(){inta=3,b=4;
有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{
要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是()。A)fstreamB)istrearaC)ostreamD)iomanip
友元类的所有成员函数都是另一个类的______。
随机试题
没食子酸乙酯比色法测定饮料中茶多酚时,用没食子酸乙酯作为比色标准。
下列不属于内源性抗原的是
A.医师在执业活动中,人格尊严、人身安全不受侵犯B.医师在执业活动中,应当遵守法律、法规,遵守技术操作规范C.对医学专业技术有重大突破,作出显著贡献的医师,应当给予表彰或者奖励D.医师应当使用经国家有关部门批准使用的药品E.对考核不合格的医师,可以
用硅酮结构密封胶粘结固定构件时注胶应()。
根据《企业破产法》及相关规定,下列关于破产申请的受理说法中正确的有()。
风险型决策的标准是()。
在下列各项中,票据的持有人可以行使追索权的有()。
必要条件指的是两个句子之间的一种关系,如果南甲句子为假。可得出乙句子为假,那么就说甲句子是乙句子的必要条件。根据上述定义,以下哪项中的前一个句子是后一个句子的必要条件?()
某市有甲、乙、丙三个工程队,工作效率比为3:4:5。甲队单独完成A工程需要25天,丙队单独完成B工程需要9天。现由甲队负责B工程。乙队负责A工程,而丙队先帮甲队工作若干天后转去帮助乙队工作。如希望两个工程同时开工同时竣工,则丙队要帮乙队工作多少天?
下列关于栈叙述正确的是()。
最新回复
(
0
)