1、国家二级 C+机试(操作题)模拟试卷 297及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostream*error*templateTVoid fun(T t) std:cout“test“std:endl;*error*templateboolVoid fun(bool t) std:cout
2、(t?“Hello“:“Hi“)std:endl;int main() *error* bool flag=TRUE; fun(flag); fun(int)flag); return 0;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请完成函数 fun(int x),该函数功能是将 x的值转换成二进制数输出到屏幕,并且在函数中调用写函数 WriteFile()将结果输出到 modi2txt 文件中。例如:x=13,13 的二进制数字为 1101,则输出到屏幕的为 1101。 注意:不要改动 main()函数,不
3、得增行或删行,也不得更改程序的结构。 #include #include #include using namespace std; Void WriteFiie(char*str) ofstream out1; out1open(“modi2txt“,ios base:binary ios_base:app); for(int i=0;stri!=0;i+) out1put(stri); out1Close(); Void fun(int x) void ClearFile() ofstream out1; out1open(“modi2txt“); out1close(); int mai
4、n() ClearFile(); fun(13); return 0; (分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义类的公有数据成员函数 No、Name32,其中 No是 int型的数据,Name32为字符型。请在注释*1*后添加适当的语句。 (2)完成函数 set的定义,分别设置 No和 Name的值,请在注释*2*后添加适当的语句。 (3)完成函数 print(),请在注释*3*后添加适当的语句,打印的输出如下: No=111 Nam
5、e=Garfield (4)加缺省构造函数,设置 No为 0,Name 为空,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass TestClasspublic: *1* *2* No=no; for(int i=0;strNamei!=0;i+) Namei=strNamei; Namei+1=0; void print() *3* Testelass() *4* ;int main() TestClass stu; stuSet(111,“Garfield“); stuprint()
6、; return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 297答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostream*error*templateTVoid fun(T t) std:cout“test“std:endl;*error*templateboolVoid
7、fun(bool t) std:cout(t?“Hello“:“Hi“)std:endl;int main() *error* bool flag=TRUE; fun(flag); fun(int)flag); return 0;(分数:2.00)_正确答案:(正确答案:(1)templateclass T (2)删除“templatebool” (3)bool flag=true;)解析:解析:(1)C+中的模板类格式为 templateclass T,所以将题目中程序中的第 1个标识下语句“templateT”修改为“templateclass T”。 (2)在第 2个标识下的“void
8、fun(bool t)”函数中,其中 t变量为布尔型变量,是 C+中的基础变量,并不是模板变量,并没有使用到模板类,所以删除第 2个标识下的模板类型定义语句。 (3)第 3个标识下的“bool flag=TRUE;”是声明布尔型变量flag,并将其值赋为逻辑真。而 TRUE并不是合法值,C+中区分大小写,所以逻辑真值应为 true,即“bool flag=true;”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请完成函数 fun(int x),该函数功能是将 x的值转换成二进制数输出到屏幕,并且在函数中调用写函数 WriteFi
9、le()将结果输出到 modi2txt 文件中。例如:x=13,13 的二进制数字为 1101,则输出到屏幕的为 1101。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #include #include #include using namespace std; Void WriteFiie(char*str) ofstream out1; out1open(“modi2txt“,ios base:binary ios_base:app); for(int i=0;stri!=0;i+) out1put(stri); out1Close(); Void fun(
10、int x) void ClearFile() ofstream out1; out1open(“modi2txt“); out1close(); int main() ClearFile(); fun(13); return 0; (分数:2.00)_正确答案:(正确答案:char str32; int i; for(i=30;i=0;i-)计算二进制 if(x2)stri=1; 求余,如果余不为零字符串 str第 i位为 1 else stri=0; 否则为 0 x=1; if(!x)break; str31=0; 串加尾符 coutstriendl; WriteFile(stri);)解
11、析:解析:(1)定义存放二进制的字符串 str。 (2)然后利用 for循环对十进制数字 X进行取余运算,直到余数为 0结束。 (3)如果取余结果为 0,则二进制字符串这个字符位的值为 0,否则为 1。 (4)最后调用 WriteFile将运算结果存入文件。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义类的公有数据成员函数 No、Name32,其中 No是 int型的数据,Name32为字符型。请在注释*1*后添加适当的语句。 (2)完成函数 set的定义,分
12、别设置 No和 Name的值,请在注释*2*后添加适当的语句。 (3)完成函数 print(),请在注释*3*后添加适当的语句,打印的输出如下: No=111 Name=Garfield (4)加缺省构造函数,设置 No为 0,Name 为空,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass TestClasspublic: *1* *2* No=no; for(int i=0;strNamei!=0;i+) Namei=strNamei; Namei+1=0; void print(
13、) *3* Testelass() *4* ;int main() TestClass stu; stuSet(111,“Garfield“); stuprint(); return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:int No;char Name32; (2)添加语句:void Set(int no,char*strName) (3)添加语句:cout“No=“Noendl“Name=“Name解析:解析:(1)题目 1要求“定义类的公有数据成员函数 No、Name32,其中 No是 int型的数据,Name32为字符型”。在已有程序中,类定义的 public区域中,定义变量 No,Name32,即在第 1个标识下添加语句“int No;char Name32;”。 (2)题目 2要求“完成函数 set的定义,分别设置 No和Name的值”。第 2个标识下说明函数 set的语句中,应该包括变量 no,strName 的定义,然后在函数中将其值赋值给 No,Name,即添加定义语句“void Set(int no,char*strName)”。 (3)题目 3要求“完成函数 print()”,根据输出结果,知道输出的是 No和 Name的值,所以这里补全cout“No=“Noendl“Name=“Name