1、国家二级 C+机试(操作题)模拟试卷 50及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi 1 cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 150 200 注意:错误的语句在 *error*的下面,修改该语句即可。 提示:定义 Numberl为一个整型数据位长的变量。 1 #include 2 *error* 3 Struct 4 5 *error* 6 int Numberl: 1 ; 7 int Number2; 8 MyStruct ; 9 void mein() 10 11 MyStruct mstr ; 12 mstr N
2、umberl=15 0; 13 mstr Number2=15 ; 14 *error* 15 int*ptr=&mstr Numberl ; 16 cout 2 void sort(int&m, int&n, int&1) 3 4 5 6 int main() 7 8 int x=9; 9 int y=13 ; 10 int z=一 3 ; ii sort(x, y, Z); 12 cout 2 class Person 3 4 public: 5 *1* 6 void print(); 7 int sexj 8 ; 9 clasS Man: public Person 10 11 publ
3、ic: 12 Man() 13 14 *2* 15 16 17 void print()( 18 cout ; 程序当中定义结构体名放在后面 , MyStruct为结构体变量类型,相当于 typedef为已有的类型定义一个新的类型,第 1个标识下应改为 “typedef struct”。 (2)第 2标识下是定义 Numberl为一个整型数据变量,整型数据位数为 32(4字节 ),因此第 2个标识下应改成 “intNumberl: 32; ”或 “int Numberl: ”。 (3)ptr为整型数据指针, mstr为 MyStruct类型结构变量,两者类型不一致应该做强制类型转换,第 3个标
4、识下应改成 “int*ptr: (int*)&mstr; ”,表示将 mstr的地址给 ptr, ptr指向 MyStruct的第一个域 Number1, Numberl也是整形,类型一致,故可通过 ptr指针来改变 Number1的值。 二、简单应用题 2 【正确答案】 1 int t ; 2 if(mn) 3 t=m; m=n; n=t ; ) *交换 x, y的值 * 4 if(m1) 5 t=m; m=1 ; l=t; ) *交换 x, z的值 * 6 if(n1) 7 t=n; n=1; l=t; ) *交换 z, y的值 * 【试题解析】 sort函数实现 3个参数的从大到小的排序
5、,可以采用很多方法来排序,比如选择法排序、冒泡法排序等,这里要求采用比较的方法来实现排序,由于需要排序的数据较少,只有 3个,逐个比较就可以找到最大最值小进行排序。 解题思路 (1)由审题分析可知,三次比较便可将 m、 n、 1排序。 (2)在实现时,先将 m与 n进行比较,如果 mn则将 m与 n的值进行交换,然后再用 m与 1进行比较,如果 m1则将 m与 1的值进行交换,这样能使 m最大。然后再将 n与 1进行比较,若 n1则将 n与 1的值互换,互换后则 1最小,这样就得到 m最大, 1最小的排序结果。 (3)在 sort函数内用三个 if比较即可,条件成立则进行交换。 三、综合应用题
6、 3 【正确答案】 (1)将 “void print()(); ”补充完整为: virtualvoid print()(); (2)添加语句: sex=1; (3)添加语句: sex=0; (4)添加语句: void fbln(Person& p) 【试题解析】 在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给 出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类的成员函数实现各种输出操作。 解题思路 (1)题目 1要求 “基类 Person完成打印功能,定义其中的打印函数为虚函数 ”。虚函数是函数的一种,定义虚函数,在函数名前声明 vir
7、tual就可以了,所以第 1个标识下的 “void print(); ”语句修改为 “virtual void print(); ”。 (2)题目 2要求 “类 Man继承于 Person,在构造函数中设置性别为 1”。基类Person中变量 sex是用来存放性别的, Man继承。 Person,所以 Man中性别的变量可以使用基类中的 sex变量,设置性别为 l,即 “sex=1: ”。 (3)题目 3要求 “类 Woman继承于 Person,在构造函数中设置性别为 0”。同(2),在第三个标识下添加 “sex=0; ”。 (4)题目 4要求 “实现函数 fun(),用于传递不同的类型,打印出性别 ”。根据“p print0; ”语句知道, fun()函数的形参为指针 p,由于它调用了基类 Person中的成员函数 print(),所以 p的基类为: Person,即添加函数 fun()的定义为“voidftm(Person&p)”。