1、国家二级 C+机试(操作题)-试卷 69 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modi lcpp,该程序运行时有错误,请改正其中的错误,使程序正确运行。并且使程序输出的结果为: OK 注意:错误的语句在*error*的下面,修改该语句即可。 #include class CBase public: CBase() a=b=0; private: int a,b, ; class CDerivel:public CBase public: CDerivel() *error* virtual
2、 void func(), ; class CDerive2:publ ic CDerivel public: CDerive2() a=0; b=0; void func() *error* cout12; 15 if(n= 1) 16 17 break; 18 1 9 )whil e(1); 20 for(int i=0 ; iXXij; 26 27 28 tout;12; 15 if(n= 1) 16 17 break; 18 1 9 )whil e(1); 20 for(int i=0 ; iXXij; 26 27 28 tout;fun(n)_正确答案:(正确答案:int data=
3、0; 初始化求平方和变量 for(int i=0;in ; i+) data+=XXii*XXii; 求正对角线平方和 if(i!=ni 一 1) data+=XXiIni 一 1+XXiIni 求逆对角线平方和 _return data;)解析:解析:本题函数中的功能是输出 N 行 N 列正方阵,然后求两条对角线上各元素之平方和。其中,假设矩阵行、列分别为 i、j,那么对角线上的元素特点是主对角线上 i=j,以及逆对角线 j=n-i-1。解题思路 (1)首先初始化求平方和变量,设置求平方和的变量为 0。 (2)然后利用 for 循环求得矩阵正对角线平方和。 (3)最后求得逆对角线平方和,返回
4、平方和变量。三、综合应用题(总题数:1,分数:2.00)3.使用打开考生文件夹下的源程序文件 modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)利用 define 定义常量 TRUE 为 1,定义常量 FALSE 为 0,请在注释*1*后添加适当的语句。 (2)在类 A2 前增加 Al 的声明,请在注释*2*后添加适当的语句。 (3)在类 C1 中声明友元函数 bool func(A2&a,AI&b),请在注释*3*后添加适当的语句。 (4)实现函数 bool func(A2&obj1,Alaobj2)功能,检查两个类的值都为 TRUE,则
5、返回 TRUE,请在注释*4*后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include *1* #define FALSE 0 *2* C1ass A2 private: bool m A2; friend bool func(A2&obj 1, A1&obj 2); public: A2() mA2=FALSE ; public: void setA2(bool n) m_A2=n ; ; class A1 private: bool m A1; *3* public: A1() m_A1=TRUE ; public: void SetAl(bool
6、 n) m_A1=n ; ; bool func(A2&obj 1,AI&obj 2) *4* recurn ) int main() A2 obj 0; A1 obj 1; cout_正确答案:(正确答案:(1)添加语句:#define TRUE 1 (2)添加语句:class A1 ; (3)添加语句:friend bool func(A2ob_1,A1obj 2); (4)将“return”补充完整为:return obj 1m A2=TTUE &j2 m_A2=TURE)解析:解析:(1)#define 命令一般将一个指定的标识符(即宏名)来代表一个字符串,其定义形式一般为:#define 宏名(参数表)字符串,因此第 1 个标识下应添加#define TRUE1。 (2)类声明格式为:“class;”,故第 2 个标识下应添加“class A1”。 (3)友元不是本类的成员函数,在它的函数体内部可以通过对象名来访问类的私有成员和保护成员。友元函数是在类声明中由关键字 friend 修饰的非成员函数,3 出添加语句:“friend bool func(A2&obj1,A1&obj2);”。 (4)函数 func 返回变量 m A2 和 m Al 的逻辑与运算结果,因此第 4 标识下应改为“retum obj1.m A2=:TRUE&0bi2m A1=TRUE;”。