1、国家二级 C+机试(操作题)模拟试卷 283及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果: (4,5) 7,8 (4,8) 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhclass CObj0public: CObj0(int i,int j) x=i; y=j; *error* virtual void move(int a;int b) x+=a; y+=b; vo
2、id print() cout“(“x“,“y“)“endl; public: int x , y;class CObj1:public CObj0public: *error* CObj1(int i,int j,int k):(i,j) m=k; n=1; void print() coutm“,“nendl; void func() move(3,5); void display() *error* print(); private: int m , n;void main() CObj0 obj(4,5); objprint(); CObj1 obj1(1,3,7,8); obj1fu
3、nc(); obj1print(); obj1display();(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(char*s,char*s1,char*s2)中形参字符串 s1和 s2有相同的字符个数,且 s1中各字符互不相同。该函数实现将已知字符串 S中所有在字符串 s1中也存在的字符,都用字符串 s2中的对应位置的字符代替。 例如:设字符串 S、sl 和 s2分别为: S=“ABCABC“, s1=“AC“, s2=“ZX“ 则 s2中的字符Z和 X分别
4、对应 s1中的字符 C和 A,函数调用 fun(s,s1,s2)将字符串 S的内容变为“ZBXZBX“。 注意:不能修改程序的其他部分,只能修改 fun()函数。 #include void fun(char*s,char*s1,char *s2) Void main() char s=“ABCABC“; fun(s,“AC“,“ZX“); std:coutnext=temp; (2)添加语句:pNext=pNext=next; (3)将“while()”补充完整为:while(p=next!=NULL) (4)将“TestClass*tempi=;”补充完整为: TestClass*temp
5、l=p=next;)解析:解析:(1)题目 1要求“在父节点的 Next中保存新插入的节点的指针”。对于指针的操作pParent-next 为 pParent的子结点,在父节点的 Next中保存新插入的节点的指针,即“pParent-next=temp;”。 (2)题目 2要求“把 pNext的子节点赋给 pNext本身”。pNext-next 为 pNext的子结点,把 pNext的子节点赋给 pNext本身,即“pNext=pNext-next;”。 (3)注释*3*下是判定 p的子节点不为空。p 的子节点是 p-next。程序中的“while()”缺乏P的子节点不为空的判断条件,所以修改为“while(p-next!=NULL)”。 (4)题目 4要求“用 templ保存动态申请内存节点的链表头”。p 为链表,p-next 为链表头。程序中的语句“TestClass*temp1=;”中 temp1没有被赋值,所以修改为“TestClass*templ=p-next;”。