1、国家二级 C+机试(操作题)模拟试卷 41及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi cpp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。 程序输出: s1: n=20 s2: n=10 执行 s3 add(s1, s2) s3: n=30 s4: n=30 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 1 #include 2 class TestClass 3 4 int n; 5 public: 6 TestClass() 7 TestCla8s(int m) 8 9 n=m
2、; 10 11 *error* 12 TestClass add(TestClass s1, s2) 13 14 this-n=s1 n+s2 n; 15 *error* 16 return(this); 17 18 void di sp() 19 20 cout 2 #include 3 #include 4 using namespace std; 5 void WriteFile(char*Str) 6 7 ofStream outl ; 8 outl open(“modi2 txt“, ios_base: binary los_base: app); 9 for(int i=0 ; s
3、tri!=0; i+) 10 outl put(stri); 11 outl Close(); 12 13 void fun(int x) 14 15 16 17 void ClearFile() 18 19 ofstream outl; 20 outl open(“modi2 txt“); 21 outl close(); 22 23 int mein() 24 25 ClearFile(); 26 fun(13); 27 return 0 ; 28 三、综合应用题 3 使用 VC6打开源程序文件 modi3 cpp。此程序的功能是将 outl txt文件中的内容输出到屏幕与文件中。输出如下
4、: 李一 1 78m 2l 王一 1 65m 23 out2 txt文件的内容如下: 李一 1 78m 2l 王一 1 65m 23 其中定义的类并不完整,按要求完成 下列操作,将类的定义补充完整。 (1)以输入方式打开文件 outl txt,请在注释 *1*后添加适当的语句。 (2)以输出方式打开文件 out2 txt,请在注释 *2*后添加适当的语句。 (3)从文件中获得一个字符,判断是否结束,如果结束则退出输出。请在注释 *3*后添加适当的语句。 (4)把获得的字符输出到文件中,请在注释 *4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何
5、内容。 1 #include 2 #include 3 #include 4 void main() 5 6 char ch; 7 fstream infile, outfile ; 8 *1* 9 infile open(:outl txt:); 10 if(!infile) 11 12 coutn=s1 n+s2 n: ”语句中的 this变量为指针变量,所以第 2个标识下的 “return(this); ”返回语句中的 this变量,应该返回指针型,所以修改为“retum(*this); ”。 (3)C+中类的定义 格式应为 “class类名 ; ”,以分号为结尾,所以第 3个标识下,类
6、结尾处补充分号 “; ”,即修改为 “; ”。 二、简单应用题 2 【正确答案】 1 char str32; 2 int i; 3 for(i=30 ; i=0 ; i-)计算二进制 4 5 if(x 2)stri=1; 求余,如果余不为零字符串 str第 i位为 1 6 el se stri=0; 否则为 0 7 x=1 ; 8 if(!X)break ; 9 10 str31= 0,; 串加尾符 11 cout&striendl ; 12 WriteFile(&stri); 【试题解析】 (1)该程序功能是实现十进制转换成二进制数。十进制到二进制的转换是对十进制的数字进行 2的取余运算,余
7、数不为零则取 1,否则为 0,然后对余数进行循环取余运算,直到余数为 0。 (2)从已给部分源程序的 main主函数开始入手,核心函数 fun(int x)中的 x参数为输入的十进制数。 解题思路 (1)定义存放二进制的字符串 str。 (2)然后利用 for循环对十进制数字 X进行取余运算,直到余数为 0结束。 (3)如果取余结果为 0,则二进制字符串这个字符位的值为 0,否则为 1。 (4)最后调用 WriteFile将运算结果存入文件。 三、综合应用题 3 【正确答案】 (1)将 “infile open(“out1 txt“); ”补充完整为:infile open(“utl txt“
8、”, ios: in); (2)将 “outfile open(“out2 txt“); ” 补充完整为: outfile open(“out2 txt“,ios: out); (3)将 “while()”补充完整为: while(infile get(ch) (4)添加语句: outfilech; 【试题解析】 本题的功能是将 outl txt文件中的内容输出到屏幕与文件中。解题思路为在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的 main主函数 开始入手,可以看出程序是对文件的操作。 解题思路 (1)题目 l要求 “以输入方式打
9、开文件 outl txt”。在 C+中调用文件流的成员函数 open的格式为,文件流类 open(“文件名 “, ios: in),所以第 1个标识下语句就该为 “infile open(“out1 txt“,ios: in); ”。 (2)题目 2要求 “以输出方式打开文件 out2 txt”。同理第 2个标识下修改为“outfile open(“out2 txt“, ios:oout); ”。 (3)题目 3要求 “从文件中获得一个字符,判断是否结束 ”。程序中的 “while()”循环判断语句中缺少从文件中获得的字符,所以这里补全 while循环判断条件,即“while(infile get(ch)”。 (4)题目 4要求 “把获得的字符输出到文件中 ”。在 C+中,用流插入运算符为“”,所以根据题干中的要求在第四个标识下补全写入文件的流操作语句,即“outfilech; ”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1