首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fu
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fu
admin
2015-05-30
33
问题
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成构造函数的定义,请在注释//********1********后添加适当的语句。
(2)定义类的友元函数fun(),请在注释//********2********料后添加适当的语句。
(3)定义类的友元函数main(),请在注释//********3********后添加适当的语句。
(4)补充语句,释放内存。请在注释∥********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
1 #include
2 class TestClass
3 {
4 public:
5 //********1********
6
7 {
8 data=d;
9 next=NULL;
10 }
ii void SetNext(TestClass* p)
12 {
13 next=p ;
14 }
15 private:
16 int data ;
17 TestClass* next;
18 //********2********
19
20 //********3********
21
22 };
23 TestClass* fun(TestClass* h)
24 {
25 TestClass *t,*s,*u,*V;
26 s=h->next;
27 h->next=NULL;
28 while(s!=NULL)
29 {
30 for(t=s,v=h;v!=NULL &&v->data
data ; u=v,v=v一>next)j
31 s=s一>next ;
32 if(v==h)
33 h=t ;
34 else
35 u->next=v;
36 t->next=v;
37 }
38 return h ;
39 }
40 void main()
41 {
42 TestClass*h=NULL ;
43 TestClass*q=NULL ;
44 do f
45 int data ;
46 cout<<"please input a number,and end with 0"<
47 cin>>data;
48 if(data==0)break ;
49 TestClass*P = new TestClass(data);
50 if(h==NULL)
51 {
52 h=q=p;
53 }
54 else
55 {
56 q->SetNext(p);
57 q=p ;
58 }
59 }while(1);
60 h=fun(h);
61
62 for(;h!=NULL ;)
63 {
64 q=h一>next ;
65 cout<
data<<" "<
66 delete h;
67 //********4********
6 8 }
69 return;
70 }
选项
答案
(1)添加语句:Testclass(int d) (2)添加语句:friend TestClass*fun(TestClass*); (3)添加语句:friend void main(); (4)添加语句:h=q ;
解析
本题的功能是将键盘输入的数字建立一个链表。在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的main主函数开始入手,可以看出程序通过调用类TestClass和函数fun实现各种输出操作。
[解题思路]
(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/MPNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
当+运算符被重载为非静态成员函数时,成员运算符objl+obj2被C++编译器解释为______。
重载一个运算符函数时,其参数表中没有任何参数,这说明该运算是______。
有如下程序:#include<iostream>usingnamespacestd;classsample{private:intx,y;public:sample(inti
假定MyClass为—类,执行MyClassa[3],*p[2];语句时会自动调用该类构造函数()次。
设有语句:charstr1[]="string",str2[8],*str3,*str4="string";,则下列对库函数strcpy调用不正确的是()。
输入流对象是输出流的源头,下面______不是输入流类。
下列说法有错误的是______。
程序的三种基本控制结构的共同特点是______。
有如下函数模板定义:template<typenameT1,typenameT2,typenameT3>T2plus(T1t1,T3t3){returnt1+t3;}
随机试题
某初孕妇23岁,妊娠38周,枕左前位。患者有先天性房间隔缺损病史。目前心功能Ⅱ级,规律宫缩,宫口开大8cm,胎头在坐骨棘水平下2cm,其护理措施正确的是
下列哪些不是癌前病变
患者,男,80岁,既往有高血压病史。近日患胃肠炎,在输液过程中突发气促,不能平卧,剧烈咳嗽,咳大量粉红色泡沫痰,现最好选用
A、互盲和保密B、对症下药、剂量安全C、防止商品化D、联合与协作E、严格掌握指征,手术动机正确属于药物治疗的道德要求的是
具有燥湿功效的药物是
王某是监狱管理人员,与郭某有隙。后郭某因盗窃罪被关押于王某所在的监狱。王某于是在巡视时借机找碴儿,对郭某进行殴打。郭某被打成重伤,遂要求刑事赔偿。下列说法中正确的是:
下列关于竣工验收的说法,正确的是()。
夏某夫妇计划于明年生育一个宝宝,请理财规划师为其调整家庭的风险管理和保险规划。夏某夫妇非常关心孩子的教育问题,尤其是高等教育,如果考虑从事保险的角度解决夏先生夫妇的子女教育规划问题,理财规划师需要为家庭增加的保险产品为()。
沪市投资者可以使用其所持的上海证券账户,在申购日向上证所申购在上证所发行的新股,每一申购单位为()股。
一个类的友元函数能够访问该类的______。
最新回复
(
0
)