1、国家二级 C+机试(操作题)模拟试卷 81及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: number1=a number2=a number1=a number2=b 注意:错误的语句在 *error*的下面,修改该语句即可。 #include class CMyClass publiC: *error* friend void SetValue(CMyClass obj, char c) obj number1=c; obj number2=c; *error* void SetV
2、alue(CMyClass obj, char c1, char c2) obj numberl=cl; obj number2=c2; void display() cout #define NUM 8 void func(int ANUM, int n) int main() int ANUM=i, 2 f 3 t 4|5 t 6, 7, 8; func(A, 6); for(int i=0; i C1ass TestClass public: *1* *2* No=no ; for(int i=0; strNameij=0 ; i+) Namei=strNamei; Namei+1=0,
3、 void print() *3* TestClasS() *4* , int main() TestClass stu; stu Set(iii, “Garfield”); stu print(); return 0; 国家二级 C+机试(操作题)模拟试卷 81答案与解析 一、基本操作题 1 【正确答案】 (1)friend void SetValue(CMyClass&obj, char C) (2)void SetValue(CMyClass&obj, char c1, char c2) (3)t SetValue(t, a, b); 【试题解析】 (1)根据程序的输出结果,函数 Set
4、Value(t, a)执行后,输出numberl和 number2的值均为 a,在 SetValue(t, a)执行中改变了对象 t的成员numberl和 number2的值,故 SetValue(t, a)的第一个参数传递的是引用,因此第 1个标识下应改为 “friend void SetValue(CMyClass&obj, char c)”。 (2)主函数中 t SetValue(t, a, b)后调用 t的 display()函数,在屏幕上打印,“numberl=a number2=b”,可知在 SetValue(CMyClass obj, char cl, char c2)中改变了对
5、象 t的成员 numberl和 number2的值,因此第一个参数传递为引用方式,故第 2个标识下应改为 “void SetValue(CMyClass&obj, char c1, char c2)”。 (3)由 2可知,第 3个标识下是调用函数 SetValue(CMyClass&obj, char cl, char c2)函数,函数的第一个参数为引用,直接使用变量名即可,因此第 3标识下的引用使用错误,应改为 “t SetValue(t, a, b); ”。 二 、简单应用题 2 【正确答案】 for(int i=0; in 2; i+) int temp=Ai;交换 Ai=Ani; A
6、Ini=temp; 【试题解析】 (1)用循环来实现该过程,题目要求从 0开始,交换 N 2次,因此循环变量 i的范围从 0变化到 N 2。 (2)下标为 0的元素与下标为 n的元素交换,下标为 1的元素与下标为 n-1的元素交换,依此类推,在循环体内,用一个临时变量记录第一个元素,然后将第二个元素赋值给第 一个元素,临时变量值赋给第二个元素,如此完成两个元素的交换。 三、综合应用题 3 【正确答案】 (1)添加语句: int No ; char Name3 2; (2)添加语句: void Set(int no, char*StrName) (3)添加语句: cout“No: IlNoend
7、l“Name=” Nameendl; (4)添加语句: No=Name0=0; 【试题解析】 本题程序的功能是利用成员函数 set设置类成员数据数值,并利用成员函数 print输出成员数值。在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类 TestClass和其构造函数实现各种输出操作。 解题思路 (1)题目 1要求 “定义类的公有数据成员函数 No、 Name32,其中 No是 int型的数据, Name32为字符型 ”。在已有程序中,类定义的 public区域中,定义变量No, Nam
8、e32,即在第 1个标识下添加语句 “int No; char Name32”。 (2)题目 2要求 “完成函数 set的定 义,分别设置 No和。 Name的值 ”。第 2个标识下说明函数 set的语句中,应该包括变量 no, strName的定义,然后在函数中将其值赋值给 。 No, Name,即添加定义语句 “void set(int no,char*slrName)” (3)题目 3要求 “完成函数 print()”,根据输出结果,知道输出的是 No和 Name的值,所以这里补全 “cout”No=”Noendl“Name=“Nameendl: ”。 (4)题目 4要求 “加缺省构造函数,设置 No为 0, Name为空 ”,即在 TestClass()构造函数中补充赋值语句 “No=Name0=0; ”。