1、国家二级 C+机试(操作题)模拟试卷 102及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi l cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行。并且使程序输出的结果为: OK 注意:错误的语句在 *error*的下面,修改该语句即可。 #include class CBase public: CBase() a=b=0; private: int a, b, ; class CDerivel: public CBase public: CDerivel() *error* virtual void func(), ; class CDeriv
2、e2: publ ic CDerivel public: CDerive2() a=0; b=0; void func() *error* coutfunc(); 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。请完成函数 fun(int n),求出 n11矩阵的对角线数字的平方和 。如果 n为奇数,则对角线交叉部位数字只参与一次计算。 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 1 #inolude 2 #define MAX N 10 3 int XXMAX NMAX N; 4 int fun(i
3、nt 13 ) 5 6 7 8 void main() 9 10 int n; 11 do 12 1 3 count12; 15 if(n= 1) 16 17 break; 18 1 9 )whil e(1); 20 for(int i=0 ; iXXij; 26 27 28 tout; *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 ; ; c
4、lass A1 private: bool m A1; *3* public: A1() m_A1=TRUE ; public: void SetAl(bool n) m_A1=n ; ; bool func(A2&obj 1, AI&obj 2) *4* recurn ) int main() A2 obj 0; A1 obj 1; cout()=0,因此第 1个标识下应为 “virtual voidfunc()=0; ”。 func()函数 没有参数表。 (2)编译程序后发现第 2个标识下有错误, cout流中的数据是用流插入运算符 “; ”,故第 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&0bi2 m A1=TRUE; ”。