1、国家二级 C+机试(操作题)模拟试卷 427及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: number1=48 number2=936 number3=09 PRODUCT=404352 注意:错误的语句在*error*的下面。修改该语句即可。其他的语句不能修改。#includeiostreamusing namespace std;int main() double number1=48,number2=936,number3
2、=09; *error* Droduct=number1*number2 *number3; *error* cout“number1=“number1 t “number2=“number2t; *error* cout number3=“number3“t; cout“PRODUCT=“productend1; return 0;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分的程序。函数 func(intANUM,int n)实现的功能是将数组的内容进行一次重新排序。排序的
3、方法是:给定11,则下标为 i的数字与下标为 n-i的数字交换。从 0开始,交换 N2 次,则最后的内容为排序后的结果。 如果:A8=1,2,3,4,5,6,7,8,n=6,则结果:A8=7,6,5,4,3,2,1,8。 注意:不能修改其他代码。#includeiostreamh#define NUM 8void func(int ANUM,int n)int main() int ANUM=1,2,3,4,5,6,7,8); func(A,6); for(int i=0;isizeof(A)sizeof(int);i+) coutAi ; coutend1; return 0;(分数:2.0
4、0)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)声明类 objA1,请在注释*1*后添加适当的语句。 (2)为类 objA0增加友元函数 func(),请在注释*2*后添加适当的语句。 (3)为类 objA1增加友元函数 func(),请在注释*3*后添加适当的语句。 (4)函数func()返回 objA1对象中的变量和 objA0的静态变量的乘积,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改
5、其他的程序代码。#includeiostreamh*1*class objA0private: static int m_A0; *2*;int objA0:m_A0=10;class objA1private: int m_A1; *3*public: objA1(int i) m_A1=i; ;int func(objA1& obj) *4*int main() obj A1 obj0(10); coutfunc(obj0)end1; return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 427答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1
6、,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: number1=48 number2=936 number3=09 PRODUCT=404352 注意:错误的语句在*error*的下面。修改该语句即可。其他的语句不能修改。#includeiostreamusing namespace std;int main() double number1=48,number2=936,number3=09; *error* Droduct=number1*number2 *number3; *error* cout“
7、number1=“number1 t “number2=“number2t; *error* cout number3=“number3“t; cout“PRODUCT=“productend1; return 0;(分数:2.00)_正确答案:(正确答案:(1)double product=number1*number2*number3; (2)cout“number1:“number1t “number2=“number2 t; (3)cout“number3=“number3tend1;)解析:解析:(1)C+要求变量在定义后才能使用,显然 product变量没有定义,number1、n
8、umber2 和number3均为 double型变量,product 是这三个变量的乘积,因此 product的数据类型是 double型,因此第 1个标识下应改为 double product=number1*number2*number3。 (2)cout 流中的数据是用流插入运算符“”顺序加入的,第 2个标识下是输出 number1、number2 和 number3的值,各个数据之间用“”顺序加入,不能用“”,第 2个标识下应改为coutnumber1t“number2=“number2t。 (3)由于输出“PRODUCT=404352”在“number1=48number2=936
9、 number3=09”下一行,因此输出“number3=09”后应换行,故第 3个标识下应改为“cout“number3=“number3tend;”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分的程序。函数 func(intANUM,int n)实现的功能是将数组的内容进行一次重新排序。排序的方法是:给定11,则下标为 i的数字与下标为 n-i的数字交换。从 0开始,交换 N2 次,则最后的内容为排序后的结果。 如果:A8=1,2,3,4,5,6,7,8,n=6,则结果:A8=7,6,5,4
10、,3,2,1,8。 注意:不能修改其他代码。#includeiostreamh#define NUM 8void func(int ANUM,int n)int main() int ANUM=1,2,3,4,5,6,7,8); func(A,6); for(int i=0;isizeof(A)sizeof(int);i+) coutAi ; coutend1; return 0;(分数:2.00)_正确答案:(正确答案:for(int i=0;in2;i+) int temp=Ai;交换 Ai=An-i; An-i=temp; )解析:解析:(1)用循环来实现该过程,题目要求从 0开始,交换
11、 N2 次,因此循环变量 i的范围从 0变化到 N2。 (2)下标为 0的元素与下标为 n的元素交换,下标为 1的元素与下标为 n-1的元素交换,依此类推,在循环体内,用一个临时变量记录第一个元素,然后将第二个元素赋值给第一个元素,临时变量值赋给第二个元素,如此完成两个元素的交换。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)声明类 objA1,请在注释*1*后添加适当的语句。 (2)为类 objA0增加友元函数 func(),请在注释*2*后添加适
12、当的语句。 (3)为类 objA1增加友元函数 func(),请在注释*3*后添加适当的语句。 (4)函数func()返回 objA1对象中的变量和 objA0的静态变量的乘积,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamh*1*class objA0private: static int m_A0; *2*;int objA0:m_A0=10;class objA1private: int m_A1; *3*public: objA1(int i) m_A1=i; ;int func(obj
13、A1& obj) *4*int main() obj A1 obj0(10); coutfunc(obj0)end1; return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:class objA1; (2)添加语句:friend int func(objA1&obj); (3)添加语句:friend int func(objA1&obj); (4)添加语句:return objm_A1*objA0:m_A0;)解析:解析:(1)类的声明格式为:“class类名;”,因此第 1个标识下应添加“class objA1;”。(2)按照友元的定义格式,友元函数是在类声明中由关键字
14、 friend修饰的非成员函数,func 函数在类外部给出了具体的实现形式,即“int func(objA1&obj)”,因此第 2个标识下应添加“friend int func(objA1&obj);”,这里参数是 obiA1类对象 obj。 (3)第 3个标识下和题目 2要求一样,均是声明友元函数,因此第 2标识下应添加“friend intfunc(objA1&obj);”。 (4)通过参数 obj对象可以直接访问 objm_A1,objA0 的静态变量 m_A0是所有对象的共享成员,其访问形式为:objA0:m_A0,因此第 4个标识下应添加“return objm_A1*objA0:m_A0;”。