1、国家二级 C+机试(操作题)模拟试卷 254及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: number1=4 8 number2=93 6 number3=0 9 PRODUCT=404 352 注意:错误的语句在 *error*的下面。修改该语句即可。其他的语句不能修改。 #include iostream using namespace std; int main() double number1=4 8, number2=93 6, number3=0 9; *error* prod
2、uct=number1*number2*number3; *error* cout “number1=“ number1 t “number2=“ number2 t。 ; *error* cout “number3=“ number3 t; cout “PRODUCT=“ product( endl; return0; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。阅读下列函数说明和代码,完成空出部分的程序。函数 func(int ANUM, int n)实现的功能是将数组的内容进行一次重新排序。排序的方法是:给定 n,则下标为 i的数字与下标为 n-i的
3、数字交换。从 0开始,交换 N 2次,则最后的内容为排序后的结果。 如果: A8=1, 2, 3, 4, 5, 6, 7, 8, n=6,则结果: A8=7, 6, 5, 4, 3,2, 1, 8。 注意:不能修改其他代码。 #include iostream h #define NUM8 void func(int ANUN, int n) int main() int ANUN=i, 2, 3, 4, 5, 6, 7, 8; func(A, 6); for(int i=0; i sizeof(A) sizeof(int); i+) cout Ai ; cout endl; return0;
4、 三、综合应用题 3 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)声明类 objAl,请在注释 *1*后添加适当的语句。 (2)为类 oNA0增加友元函数 func(),请在注释 *2*后添加适当的语句。 (3)为类 obiAl增加友元函数 func(),请在注释 *3*后添加适当的语句。 (4)函数 func()返回 obiA1对象中的变量和 obiA0的静态变量的乘积,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #in
5、clude iostream h *1* class objA0 private: static int m A0; *2* ; int objA0: m_A0=10; class objA1 private: int m_A1; *3* public: objAl(int i) m_A1=i; ; int func(objAl& obj) *4* int main() objA1 obj0(10); cout func(obj0) endl; return0; 国家二级 C+机试(操作题)模拟试卷 254答案与解析 一、基本操作题 1 【正确答案】 (1)doubleproduct=numb
6、er1*number2* number3; (2)cout “number1=“ number1 t “number2=“ number2 t; (3)cout “number3=“ number3 t endl; 【试题解析】 (1)C+要求变量在定义后才能使用,显然 product变量没有定义,number1、 number2和 number3均为 double型变量, product是这三个变量的乘积,因此 product的数据类型是 double型,因此第 1个标识下应改为doubleproduct=number1*number2*number3。 (2)cout流中的数据是用流插入运
7、算符 “ ”顺序加入的,第 2个标识下是输出number1、 number2和 number3的值,各个数据之间用 “ ”顺序加入,不能用“ ”,第 2个标识下应改为 cout “number1=“ number1 t“number2=“ number2 t。 (3)由于输出 “PRODUCT=404 352”在“number1=4 8number2=93 6number3=0 9”下一行,因此输出“number3=0 9”后应换行,故第 3个标识下应改为 “cout “number3=“number3 t endl; ”。 二、简单应用题 2 【正确答案】 for(int i=0; i n
8、2; i+) int temp=Ai;交换 Ai=An-i; An-i=temp; 【试题解析】 (1)用循环来实现该过程,题目要求从 0开始,交换 N 2次,因此循环变量 i的范围从 0变化到 N 2。 (2)下标为 0的元素与下标为 n的元素交换,下标为 1的元素与下标为 n-1的元素交换,依此类推, 在循环体内,用一个临时变量记录第一个元素,然后将第二个元素赋值给第一个元素,临时变量值赋给第二个元素,如此完成两个元素的交换。 三、综合应用题 3 【正确答案】 (1)添加语句: class objAl; (2)添加语句: friend int func(objAl&obj); (3)添加语
9、句: friend int func(objAl&obj); (4)添加语句: return obj m A1objA0: mA0; 【试题解析】 (1)类的声明格式为: “class类名: ”,因此第 1个标识下应 添加“class objAl; ”。 (2)按照友元的定义格式,友元函数是在类声明中由关键字 friend修饰的非成员函数, func函数在类外部给出了具体的实现形式,即 “int func(objAl& obi)”,因此第2个标识下应添加 “friend int func(objAl&obj); ”,这里参数是 objAl类对象 obi。 (3)第 3个标识下和题目 2要求一样,均是声明友元函数,因此第 2标识下应添加“friend int func(obiAl&obj); ”。 (4)通过参数 obj对象可以直接访问 obi m A1, obiA0的静态变量 m_A0是所有对象的共享成员,其访问形式为: objA0: m_A0,因此第 4个标识下应添加“return obi m_A1*obA0: mA0; ”。