1、国家二级 C+机试(操作题)模拟试卷 54及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 1 0 注意:错误的语句在 *error*的下面,修改该语句即可。 1 #include 2 struct Struct 3 4 union 5 6 int a; 7 char c4; 8 ; 9 int b; 10 *error* 11 12 void main() 13 14 Struct m; 15 *error* 16 m c0=0; 17 m c1=0; 18 m c2=0; 19 *e
2、rror* 20 m c3: 1; 21 m b=m c3; 22 cout 2 void show() 3 4 5 6 void main() 7 8 cout 2 class Person 3 4 public: 5 *1* 6 7 8 int i; 9 for(i=0; sUserrNamei!=0; i+) 10 11 m UserNamei=sUserrNamei; 12 13 *2* 14 15 m_Old=nOld; 16 1 17 private: 18 char m UserName32; 19 int m Old; 20 *3* 21 22 ; 23 void fun(ch
3、ar*S, Person&personl, Person&person2) 24 25 *4* 26 if( ) 27 28 for(int i=0; personl m_UserNamei !=0 ; i+) 29 30 Si=personl m_UserNamei; 31 Si+1=0; 32 33 34 else 35 36 for(int i=0; person2 m_UserNamei !=0 ; i+) 37 38 Si =person2 m_UserNamei; 39 Si+1=0 ; 40 41 42 43 Void main() 44 45 char S32; 46 Pers
4、on pl(“abc“, 20); 47 Person p2(“def“, 30); 48 fun(S, pl, p2); 49 cout ; 这里定义的结构体并没有变量名列表,但是结构体定义一定是以 “; ”结束的,因此第 1个标识下应改为 “; ”。 (2)根据题目要求程序输出结果分别为 “1”和 “0”,即结构体变量 m的成员变量 a的值为 1, b的值为 0,又 a和字符数组 c4存放在同一段内存单元中,因此 a的值可由数组 c4决定 (两者使用同一地址单元 ),故 c0表示 a的低 8位, c1为 a的第二 个 8位, c2为 a的第三个 8位, c3为 a的最高 8位, a=O,所
5、以 c0: l,c1: c2=c3=0,故第 2个标识下应改为 “m c01=1; ”。 (3)由 (2)分析可知第 3个标识下应改为 “rn c3=0; ”。 二、简单应用题 2 【正确答案】 1 for(int i=9 ; i0 ; i-) 2 3 for(intj=1; jperson2 re_Old) 【试题解析】 在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,函数fun是输出年龄较大的姓名,类 Person记录了姓名和年龄。 解题思路 (1)题目 1要求 “完成类的构造函数 ”。根据 “classP
6、erson”语句知道 Person为类,所以类 Person的构造函数名为 Person,根据第 1个标识下的大括弧中的语句知道函数中的参数为数组 sUserrName存放姓名,整型 nOld存放年龄,所以补充构造函数定义为 “Person(char*sUserrName intnOld)”。 (2)题目 2要求 “完成构造函数对姓名的赋值 ”。根据 (1)中的分析,在第 2个标识下补全姓名赋值,即 “m_UserNamei=0; ”。 (3)题目 3要求 “定义类的友元函数 fun()”。在 C+中,如果在本类以外的其它地方定义了一个函数,在类体中是用 friend对该函数进行声明的,此函数
7、称为本类的友元函数,并且能够调用本类中的成员变量。程序中的 fun函数定 义为 “void fun(char*s,Person&person 1, Person&person2)”,所以声明 fun()为类 Person的友元函数,即这里补全 “friend voidfun(char幸 s,Person&person 1 Person&person2); ”。 (4)题目 4要求 “补充函数 fun()的年龄比较 ”。类 Person中年龄的变量为 m Old,根据 C+中类变量的调用格式补充第 4个标识下, if判断中的条件语句,即“if(personl m Oldperson2 m_Old)”。