1、国家二级 C+机试(操作题)模拟试卷 230及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错误,请补充程序中的丢失部分,使得程序运行。可以在修改处增加或者删除一条语句。 本程序完成以下功能: (1)获得输入的两个数字 x1, x2(例如 x1=4, x2=2); (2)输出两个中较小的一个 (例如输出 2); (3)计算 x1 x2如果 x2等于 0,返回 -1(输出结果 2); (4)输出 x1+x2的结果 (输出结果 6); (5)输出 x1+1的结果 (输出结果 5); (6)输出 x2-1的结果 (输出结果 1)。 注意:
2、不要改动 main函数,不能增行或删行,也不 能更改程序的结构,错误的语句在 *error*的下面。 #include iostream.h void main() int x1; int x2; int x3; cout “pl ease input two number: “( endl; cin x1 x2; *error* x3=(x1 x2)?x1: x2; cout “Min number is: “ x3 endl; 计算 x1 x2如果 x2等于 0,返回 -1 *error* x3=(x2)?x1 x2: -1; cout; “x1 x2=“ x3 endl; *error*
3、 x3=(-x1)+(x2+); cout “x1+x2=“ x3 endl; cout “x1+1=“ x1 endl; cout “x2-1=“ x2 endl; return; 二、简单应用题 2 使用 VC6打 开考生文件夹下的源程序文件 modi2 cpp。请完成函数 fun(int n),求出 nn矩阵的对角线数字的平方和。如果 n为奇数,则对角线交叉部位数字只参与一次计算。 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 #include iostream h #define MAX_N 10 int XXMAX_NMAX_
4、N; int fun(int n) void main() int n; do cout “please input N(1 =N 10): “ endl; cin n; if(n 10&n =1) break; )while(1); for(int i=0; i n; i+) for(int j=0; j n; j+) tout “please input: data: “ endl; cin XXij; cout fun(n) endl; return; 三、综合应用题 3 使用 VC6打开源程序文件 modi3 cpp。此程序的功能是将 out1 txt文件中的内容输出到 屏幕与文件中。
5、输出如下: 李一 1 78m 21 王一 1 65m 23 out2 txt文件的内容如下: 李一 1 78m 21 王一 1 65m 23 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)以输入方式打开文件 out1 txt,请在注释 *1*后添加适当的语句。 (2)以输出方式打开文件 out2 txt,请在注释 *2*后添加适当的语句。 (3)从文件中获得一个字符,判断是否结束,如果结束则退出输出 。请在注释*3*后添加适当的语句。 (4)把获得的字符输出到文件中,请在注释 *4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中
6、的任何内容。 #include iostream.h #include fstream.h #include stdlib.h void main() char ch; fstream infile, outfile; *1* infile open(“out1 txt“); if(!infile) cout “out1 txt文件不能打开 “ endl; abort(); *2* outfile open(“out2 txt“); if(!outfile) cout “out2 txt文件不能打开 “ endl; abort(); *3* while() cout ch; *4* cout
7、endl; infile close(); outfile close(), 国家二级 C+机试(操作题)模拟试卷 230答案与解析 一、基本操作题 1 【正确答案】 (1)x3=(x1 x2)?x1: x2; (2)x3=(x2)?x1 x2: -1; (3)x3=(x1+)+(x2-); 【试题解析】 (1)第 1个标识下 “x3=(x1 x2)?x1: x2; ”语句是判断 x1与 x2其中哪个相对较小,并将其赋值给 x3。条件运算符的格式:表达式 17表达式 2:表达式 3。执行顺序是先求解表达式 1,若非则求解表达 式 3,此时表达式 3的值就作为整个条件表达式值。所以求 x1和 x
8、2中较小的一个,如果 x1 x2为真,那么 x1的值赋给 x3,否则 x2的值赋给 x3,即第 1个标识下为 “x3=(x1 x2)?x1: x2; ”。 (2)同理,第 2个标识下计算 x1 x2如果 x2等于 0返回 -1。即 “x3=(x2)?x1 x2: -1; ”。 (3)题干中求 x1+1,而 -x1是 x1-1,所以改为 x1+。同理 x2+改为 x2-。即“x3=(x1+)+(x2-); ”。 二、简单应用题 2 【正确答案】 int data=0;初始化求平 方和变量 for(int i=0; i n; i+) data+=XX ii*XXii;求正对角线平方和 if(i!=
9、n-i-1) data+=XXin-i-1*XXin-i-1;求逆对角线平方和 return data; 【试题解析】 (1)首先初始化求平方和变量,设置求平方和的变量为 0。 (2)然后利用 for循环求得矩阵正对角线平方和。 (3)最后求得逆对角线平方和,返回平方和变量。 三、综合应用题 3 【正确答案】 (1)将 “infile open(“out1 txt“); ”补充完整为:infile open(“out1 txt“, ios: in); (2)将 “outfile open(“out2 txt“)j”补充完整为: outfile open(“out2 txt“, ios:out)
10、; (3)将 “while()”补充完整为: while(infile get(ch) (4)添加语句: outfile ch; 【试题解析】 (1)题目 1要求 “以输入方式打开文件 out1 txt”。在 C+中调用文件流的成员函数 open的格式为,文件流类 open(“文件名 “, ios: in),所以第1个标识下语句就该为 “infile open(“out1 txt“, ios: in); ”。 (2)题目 2要求 “以输出方式打开文件 out2 txt”。同理第 2个标识下修改为“outfile open(“out2 txt“, ios: out); ”。 (3)题目 3要求 “从文件中获得一个字符,判断是否结束 ”。程序中的 “while()”循环判断语句中缺少从文件中获得的字符,所以这里补全 while循环判断条件,即“while(infile get(ch)”。 (4)题目 4要 求 “把获得的字符输出到文件中 ”。在 C+中,用流插入运算符为 “ ”,所以根据题干中的要求在第四个标识下补全写入文件的流操作语句,即“outfile ch; ”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1