首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fun(),请在注释
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fun(),请在注释
admin
2019-06-05
45
问题
使用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全国计算机二级
相关试题推荐
在每个C++程序中必须有且仅有一个()。A)函数B)主函数C)预处理指令D)语句
下面关于函数模板的表述中不正确的是()。A)类模板的成员函数都是模板函数B)类模板本身在编译过程中不会产生任何代码C)类模板只能有虚拟类型的参数D)用类模板定义一个对象时,实参不能省略
有如下类声明:classTestClass{intn;public:TestClass(inti=0):n(i){}voidsetValue(intn0);};
有如下定义:intb[10]={1,2,3,4,5,6,7,8,9,10},*q=b;则数值为8的表达式是()。A)*q+8B)*(q+7)C)*q+=8D)q+7
设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩
下列哪种数据模型可以用树形结构来表示实体之间联系()。A)网状模型B)数据模型C)关系模型D)层次模型
A、 B、 C、 D、 B常用的软件结构设计工具是结构图,也称程序结构图。DFD图(数据流图)是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,它是需求分析阶段的图形工具。盒式图(
若有定义语句“intx=10,y=20z=20;”,则表达式x>z&&y=z的值为______。
若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test.txt文件的是()。A)ifstreamfin;fin.open("d:\\test.txt",ios_base::in);B)fstream
随机试题
车床精车外圆的圆柱度误差有长度范围规定。()
以下关于软盘格式化叙述中______是不正确的。
过点M0(1,1,1)且以a={4,3,2}为方向向量的直线方程某种扩音器系统的单价P(元)与需求量x(套)之间的函数关系为P=-0.02x+400(0≤x≤20000),则边际收入为________.∫f(x)dx=sin2x+C,C
关于神经的营养性作用,下列叙述正确的是
口腔健康咨询时,一青年认为牙好坏是天生的,刷不刷牙无所谓,口腔科医生告诉他正确的认识应是
对于国务院反垄断委员会的机构定位和工作职责,下列哪一选项是正确的?()
项目部涉及质量验评工作的责任部门包括()。
还本付息通知单应包括的内容有()。
以下嵌入式处理器类型中不具备内存管理单元(MMU)的是(10),嵌入式操作系统(11)可以运行在它上面。(11)
What’sthenewsitemmainlyabout?
最新回复
(
0
)