1、国家二级 C+机试(操作题)模拟试卷 304及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: 1, 2, 3, 4, 5, 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhClass TestClass *error TestClass(int i) m_i =i; void print() cout+m i,; public: int m_i;
2、); int main() *error* int i(); TestClass data(0); while(i5) *error* i+; dataprint(); coutendl; return 0;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。程序的功能是寻找 1500 以内的亲和数并显示出来,函数 amicableNum(int m,int n)判定两个数是否是亲和数。 亲和数的定义为:两个数 m和 n,如果 n的所有因子之和(因子除掉自身)等于 m,且 m的所
3、有因子等于 n,则 m、n 是互为亲和数。 注意:不能修改程序的其他部分,只能补充 amicableNum(int m,int n)函数。 #include int amicableNum(int n) int sum=0; for(int i=1;iperson2m old)解析:解析:(1)题目 1要求“完成类的构造函数”。根据“class Person”语句知道 Person为类,所以类 Person的构造函数名为 Person,根据第 1个标识下的大括弧中的语句知道函数中的参数为数组sUserrName存放姓名,整型 nold存放年龄,所以补充构造函数定义为“Person(char*s
4、UserrNameint nold)”。 (2)题目 2要求“完成构造函数对姓名的赋值”。根据(1)中的分析,在第 2个标识下补全姓名赋值,即“m UserNamei=0;”。 (3)题目 3要求“定义类的友元函数 fun()”。在 C+中,如果在本类以外的其它地方定义了一个函数,在类体中是用 friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中的 fun函数定义为“void fun(char*s,Personperson1,Personperson2)”,所以声明 fun()为类 Person的友元函数,即这里补全“friend void fun(char*s,Personpersonl,Personperson2);”。 (4)题目 4要求“补充函数 mn()的年龄比较”。类 Person中年龄的变量为 m ld,根据 C+中类变量的调用格式补充第 4个标识下,if判断中的条件语句,即“if(personlm Oldperson2m Old)”。