1、国家二级 C+机试(操作题)模拟试卷 301及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 100 37 32 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamh*error*void main( *error* int m=0142; *error* int n=0X27; int q=32; coutmendl; coutnendl; coutqendl; return;(分数:2
2、.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成 fun()函数,其功能是:将两个从小到大有序数组 a和 b,复制合并出一个有序整数序列 c,其中形参 n和 m分别是数组 a和 b的元素个数。 注意:不能修改程序的其他部分,只能修改 fun()函数。 #include void fun (int a,int n,int b,int m,int *c) void main() int A=3,5,7,9,11,18,21; int B=6,15,19,21,39;int C15,i; for(i=0;i “A=“; for
3、(i=0;i ,; cout“B=“; for(i=0;iBi,; cout“C=“; for(i=0;iCi,; cout_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义复数类 CComplex的私有成员变量 real和 imaginary,分别用来表示复数的实部和虚部,都是 double 类型的变量。请在注释*1*后添加适当的语句。 (2)添加复数类 CComplex的带一个参数的构造函数,分别将 real和 imaginary赋值为参数 r
4、和 0。请在注释*2*后添加适当的语句。 (3)完成对运算符“+”的重载,分别对复数的实部和虚部相加。请在注释*3*后添加适当的语句。 (4)完成复数的友元函数Equal(CComplexc1,CComplexc2)的定义,如果两个数的实部和虚部都相等,则返回 1,否则返回 0,请在注释*4*后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamhclass CComplexprivate: *1*public: CComplex() real:imaginary=0; ) CComplex(double r) *2* CComplex
5、 operator+(CComplexc1) *3* tempreal=real+c1real; tempimaginary:imaginary+c1imaginary; return temp; void Set(int re,int imag) real=re; imaginary=imag; friend bool Equal(CComplexc1,CComplexc2); bool Equal(CComplexc1,CComplexc2) *4* int main() CComplex complexl(5); CComplex complex2; coutEqual(complexl
6、,comp lex2)endl; complex2Set(5,0); coutEqual(complexl,comp lex2)endl; return 0; (分数:2.00)_国家二级 C+机试(操作题)模拟试卷 301答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 100 37 32 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamh*error*void main( *error
7、* int m=0142; *error* int n=0X27; int q=32; coutmendl; coutnendl; coutqendl; return;(分数:2.00)_正确答案:(正确答案:(1)Void main() (2)int m=0144; (3)int n=0x25;或 int n=0x25;)解析:解析:(1)本题主要考察了主函数定义及不同进制之间的转换,包括十进制到八进制,十进制到十六进制。主函数定义的定义形式为“main()”,函数名之后必须是一对括号,因此第 1个标识下应改为“void main()”。 (2)cout 输出默认是 10进制方式输出的,根据
8、题目要求输出的结果可发现变量的初值不正确,十进制的 100对应八进制的 144,十进制的 37对应十六进制的 25,因此 2和 3应分别改成“int m=0144;”,“intn=0X25;”或“int n=0x25;”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成 fun()函数,其功能是:将两个从小到大有序数组 a和 b,复制合并出一个有序整数序列 c,其中形参 n和 m分别是数组 a和 b的元素个数。 注意:不能修改程序的其他部分,只能修改 fun()函数。 #include void fun (int a,int n,
9、int b,int m,int *c) void main() int A=3,5,7,9,11,18,21; int B=6,15,19,21,39;int C15,i; for(i=0;i “A=“; for(i=0;i ,; cout“B=“; for(i=0;iBi,; cout“C=“; for(i=0;iCi,; cout_正确答案:(正确答案:int i,j; for(i=j=0;injm;) *c+=aibj?ai+:bj+;比较两个数组中元素大小 while(in)*c+=ai+; while(jm)*c+=bj+;)解析:解析:(1)首先都指向数组的第一个元素。 (2)然后
10、利用 for循环对要合并的两个数组中的元素进行比较,直到两个数组结束。 (3)取比较结果小的元素,并将指向这个数组的位置向后移动一位。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义复数类 CComplex的私有成员变量 real和 imaginary,分别用来表示复数的实部和虚部,都是 double 类型的变量。请在注释*1*后添加适当的语句。 (2)添加复数类 CComplex的带一个参数的构造函数,分别将 real和 imaginary赋值为
11、参数 r和 0。请在注释*2*后添加适当的语句。 (3)完成对运算符“+”的重载,分别对复数的实部和虚部相加。请在注释*3*后添加适当的语句。 (4)完成复数的友元函数Equal(CComplexc1,CComplexc2)的定义,如果两个数的实部和虚部都相等,则返回 1,否则返回 0,请在注释*4*后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamhclass CComplexprivate: *1*public: CComplex() real:imaginary=0; ) CComplex(double r) *2* CCom
12、plex operator+(CComplexc1) *3* tempreal=real+c1real; tempimaginary:imaginary+c1imaginary; return temp; void Set(int re,int imag) real=re; imaginary=imag; friend bool Equal(CComplexc1,CComplexc2); bool Equal(CComplexc1,CComplexc2) *4* int main() CComplex complexl(5); CComplex complex2; coutEqual(comp
13、lexl,comp lex2)endl; complex2Set(5,0); coutEqual(complexl,comp lex2)endl; return 0; (分数:2.00)_正确答案:(正确答案:(1)添加语句:double real,imaginary; (2)添加语句:real=r; imagimsry=0; (3)添加语句:CComplex temp;)解析:解析:(1)第 1个标识下完成定义复数类 CComplex的私有成员变量 real和 imaginary,均为double类型的变量,因此第 1个标识下应添加“double real,imaginary;”。 (2)构
14、造函数CComplex(double r)完成类的初始化,该构造函数有一个参数,分别将 real和 imaginary赋值为参数 r和 0,因此第 2个标识下应添加“real=r;imaginary=0=9;”。 (3)编译程序可知,变量 temp没有定义,由 operator+(CComplex c1)函数体的语句可知,temp 为函数的返回值,而 operator+(CComplexc1)函数体函数返回 CComplex类对象,故在第 3个标识下补充 temp定义,即“CComplex temp;”。 (4)即判断两个对象 c1和 c2的实部和虚部是否均相等,两个逻辑结果相与即可,因此第 4个标识下应添加“retum(c1real=c2real)(c1imaginary=c2imaginary);”。