1、国家二级 C+机试(操作题)模拟试卷 312及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: CMyObject, in the construtor CMyObject, in the destrutor 注意:错误的语句在 *error*的下面,修改该语句即可。 #include class CMyObject *error* *error* CMyObjectcout #define MAX_N 10 int XXMAX_NMAX_N; int fun(int n)
2、 void main() int nj do coutn; if(n=1) break; while(1); for(int i=0; iXXij; cout #include #include Class TestClass public: TestClass(char*fileName) len=0; fstream infile; infile open(fileName, ios: in); char ch; *1* while() coutch; *2* infile Close(); void split() fstream outfile1; fstream outfile2;
3、outfilel open(“out1 txt“, ios: out); outfile2 open(“out2 txt“, ios: out); int i=0; for(i=0; ilen 2; i+) outfilelbufi; do *3* while(i!=len); outfile1 close(); outfile2 CioSe(); private: int len; char buf1024; ); void main() *4* TestClass Fsp(); Fsp split(); return; 国家二级 C+机试(操作题)模拟试卷 312答案与解析 一、基本操作题
4、 1 【正确答案】 (1)添加语句: public: (2)CMyObject()cout“CMyObject, in the construtor“endl; 【试题解析】 (1)构造函数和析构函数均为公有函数,而在 C+中默认的访问属性为私有 (private),因此构造函数和析构函数必须说明为 public,即第 1个标识下应添加 “public: ”。 (2)函数定义中在函数名后均有一对括号表示函数声明,因此第 2个标识下应改为 “ CMyObjectOcout “CMyObject, in theconstrutor“endl; ”。 二、简单应用题 2 【正确答案】 int dat
5、a=0; 初始化求平方和变量 for(int i=0; in; i+) data+=XXii*XXii; 求正对角线平方和 if(i!=ni一 1) data+=XXin-i-1*XXin-i- 1;求逆对角线平方和 return data; 【试题解析】 (1)首先初始化求平方和变量,设置求平方和的变量为 0。 (2)然后利用 for循环求得矩阵正对角线平方和。 (3)最后求得逆对角线平方和,返回平方和变量。 三、综合应用题 3 【正确答案】 (1)将 “while()”完整为: while(infile get(ch) (2)添加语句: buflen+=ch; (3)添加语句: outfi
6、le2bufi+; (4)将 “Testclass Fsp(); ”完整为: TestClass Fsp(“modi3 txt“); 【试题解析】 (1)题目 1要求 “从输入文件中获得一个字符,并判断是否到文件结尾 ”。程序中的 “while()”循环判断语句中缺少从文件中获得的字符,所以这里补全while循环判断条件, 即 “while(infile get(ch)”。 (2)题目 2要求 “把获得的输入文件的内容存储到 buf中,并且用 len记录下文件的长度。 ”所以为 buf分配空间,即 “buflen+=ch; ”。 (3)题目 3要求 “将输入文件的后一半内容存储在第二个文件中。 ”在 C+中,用流插入运算符为 “”,所将 buf中存放的数据存入文件 outfile2,以根据题干中的要求,即这里补全 “outfile2bufIi+; ”。 (4)题目 4要求 “使用文件流对象打开输入文件 modi3 txt。 ”程序应该是调用类“TestClass”中的成员函数 “split”。类的构造函数定义中存在参数 char*fileName,所以修改注释下的语句缺少参数。即 “TestClass Fsp(“modi3 txt“); ”。