1、国家二级 C+机试(操作题)模拟试卷 411及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TestClass1: 0 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include struct TestClass1 TestClass1(int i=0) m_i=i; void print() cout int fun(char* s, int a) int main() int a1024;
2、int len=fun(“1234abcdef567“, a); for(int i=0; i Class Person public: *1* int i; for(i=0; sUserrNamei! =0; i+) m UserNamei= sUserrNamei; ) *2* m_Old=nOld; private: char m_UserName32; int m_Old; *3* ; void fun(char* s, Person&personl, Person&person2) *4* if( ) for(int i=0; personl m_UserNamei! =0; i+)
3、 Si =personl m_UserNamei; Si+1=0; else for(int i=0; person2 m_UserNamei! =0; i+) Si =person2 m_UserNamei; Si+1=0; void main() char S32; Person p1(“abc“, 20); Person p2(“def“, 30); fun(s, p1, p2); cout=0&siperson2 m_Old) 【试题解析】 (1)题目 1要求 “完成类的构造函数 ”。根据 “class Person”语句知道Person为类,所以类 Person的构造函数名为 Per
4、son,根据第 1个标识下的大括弧中的语句知道函数中的参数为数组 sUserrName存放姓名,整型 nOld存放年龄,所以补充构造函数定义为 “Person(char*sUserrName int nOld)”。 (2)题目 2要求 “完成构造函数对姓名的赋值 ”。根据 (1)中的分析,在第 2个标识下补全姓名赋值,即 “m UserNamei=0;。 (3)题目 3要求 “定义类的友元函数 fun()”。在 C+中,如果在本类以外的其它地方定义了一个函数,在类体中是用 friend对该函数进行声明的,此函数称为本类的友元函数 ,并且能够调用本类中的成员变量。程序中的 fun函数定义为 “void fun(char*s,Person&person1 Person&person2)”,所以声明 fun()为类 Person的友元函数,即这里补全 “friend void fun(char*s,Person&person1,Person&person2); ”。 (4)题目 4要求 “补充函数 fun()的年龄比较 ”。类 Person中年龄的变量为 m_Old,根据 C+中类变量的调用格式补充第 4个标识下, if判断中的条件语句,即“if(personl m_Oldperson2 m_Old)”。