1、国家二级 C+机试(操作题)模拟试卷 311及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1epp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: Hello Visual C+! Hello Visual C+! 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhclass CMyObjectpublic: CMyObject() *error* cout“Hello, “Visual C+!“endl; CMyObjec
2、t(int n) *error* cout“Hello,nvisual C+!“endl; *error* CMyObject() ;Void main() CMyObj ect obj1; CMyObject obj2(0); (分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序,使输入某年某月某日,可判断这一天是这一年的第几天。 程序分析:以 3月 5日为例,应该先把前两个月的天数加起来,然后再加上 5天即本年的第几天(特殊情况:闰年输入月份大于 3时需考虑多加一天)。 注意
3、:只能补充函数 func(int year,int month,int day),请勿改动其他部分的内容。 #inC1ude int func(int year,int month,int day) Void main() coutfunc(2007,2,1)func(2007,10,10)func(2008,8,12)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开源程序文件 modi3cpp。此程序的功能是将 out1txt 文件中的内容输出到屏幕与文件中。输出如下: 李一 178m 21 王一 165m 23 out2txt 文件的内容如下: 李一 178m 21 王一
4、 165m 23 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)以输入方式打开文件 out1txt,请在注释*1*后添加适当的语句。 (2)以输出方式打开文件out2txt,请在注释*2*后添加适当的语句。 (3)从文件中获得一个字符,判断是否结束,如果结束则退出输出。 请在注释*3*后添加适当的语句。 (4)把获得的字符输出到文件中,请在注释*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。#includeiostreamh#includefstreamh#includestdlibhvoid main() ch
5、ar ch; fstream infile,outfile; *1* infileopen(“out1txt“); if(!infile) cout“out1txt 文件不能打开“endl; abort(); *2* outfileopen(“out2txt“); if(!outfile) cout“out2txt 文件不能打开“endl; abort(); *3* while() coutch; *4* coutendl; infileclose(); outfileClose();(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 311答案解析(总分:6.00,做题时间:90 分钟
6、)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1epp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: Hello Visual C+! Hello Visual C+! 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhclass CMyObjectpublic: CMyObject() *error* cout“Hello, “Visual C+!“endl; CMyObject(int n) *error* cout“Hello,nvisual C+!“endl;
7、*error* CMyObject() ;Void main() CMyObj ect obj1; CMyObject obj2(0); (分数:2.00)_正确答案:(正确答案:(1)cout“Hello,“ (2)cout“Hello, (3)CMyObject()解析:解析:(1)由程序的运行结果可知,语句 CMyObject obj1;定义 obil对象调用默认的构造函数,此时屏幕上输出“Hello Visual C+!”,cout 流中的数据是用流插入运算符“”顺序加入的,第 1个标识下“Hello,”字符串插在输出流中,因此必须加双引号引用起来,即第 1个标识下应该为“cout“H
8、ello,“”。 (2)第 2个标识下“n”表示换行,与要求的输出结果不同,因此第 2个标识下应改为“cout“Hello,”。 (3)析构函数是一个特殊的函数,其函数名与类名相同,并在其名加“”,用来与构造函数加以区别,因此第 3个标识下应改为“CMyObject()”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序,使输入某年某月某日,可判断这一天是这一年的第几天。 程序分析:以 3月 5日为例,应该先把前两个月的天数加起来,然后再加上 5天即本年的第几天(特殊情况:闰年输入月份大于 3时
9、需考虑多加一天)。 注意:只能补充函数 func(int year,int month,int day),请勿改动其他部分的内容。 #inC1ude int func(int year,int month,int day) Void main() coutfunc(2007,2,1)func(2007,10,10)func(2008,8,12)_正确答案:(正确答案:int sum; int leapyear; switch(month)*先计算某月以前月份的总天数* case 1: sum=0; break; case 2: sum=31; break; case 3: sum=59; br
10、eak; case 4: sum=90; break; case 5: sum=120; break; case 6: sum=151; break; case 7: sum=181; break; case 8: sum=212; break; case 9: sum=243; break; Case 10: sum=273; break; case 11: sum=304; break; case 12: sum=334; break; default: cout“data error“endl: break; sum=sum+day; if(year400=0(year4=0 year1
11、00!=0)*判断是不是闰年* leapyear=1; else leapyear=0; if(leapyear=1month2) sum+; return sum;)解析:解析:(1)为方便起见,先统计正常年份下,每个月的前面有多少天,可以用 switch方式查询,然后再加上本月的日子,很快便得到了这一天是属于这一年的第几天。 (2)闰年的判断方法为:if(year400=0(year4=0year100!=0),if 语句为真则为闰年,二月之后的日期后需要加一天。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开源程序文件 modi3cpp。此程序的功能是将 out1txt
12、文件中的内容输出到屏幕与文件中。输出如下: 李一 178m 21 王一 165m 23 out2txt 文件的内容如下: 李一 178m 21 王一 165m 23 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)以输入方式打开文件 out1txt,请在注释*1*后添加适当的语句。 (2)以输出方式打开文件out2txt,请在注释*2*后添加适当的语句。 (3)从文件中获得一个字符,判断是否结束,如果结束则退出输出。 请在注释*3*后添加适当的语句。 (4)把获得的字符输出到文件中,请在注释*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main
13、与其他函数中的任何内容。#includeiostreamh#includefstreamh#includestdlibhvoid main() char ch; fstream infile,outfile; *1* infileopen(“out1txt“); if(!infile) cout“out1txt 文件不能打开“endl; abort(); *2* outfileopen(“out2txt“); if(!outfile) cout“out2txt 文件不能打开“endl; abort(); *3* while() coutch; *4* coutendl; infileclose
14、(); outfileClose();(分数:2.00)_正确答案:(正确答案:(1)将“infileopen(“out1txt“);”补充完整为: infileopen(“out1txt“,ios:in); (2)将“outfileopen(“out2txt“);”补充完整为: outfileopen(“out2txt“,ios:out); (3)将“while()”补充完整为: while(infileget(ch) (4)添加语句:outfilech;)解析:解析:(1)题目 1要求“以输入方式打开文件 out1txt”。在 C+中调用文件流的成员函数 open的格式为,文件流类open
15、t(“文件名“,ios:in),所以第 1个标识下语句就该为“infileopen(“out1txt“,ios:in);”。 (2)题目 2要求“以输出方式打开文件 out2txt”。同理第 2个标识下修改为“outfileopen(“out2txt“,ios:out);”。 (3)题目 3要求“从文件中获得一个字符,判断是否结束”。程序中的“while()”循环判断语句中缺少从文件中获得的字符,所以这里补全 while循环判断条件,即“while(infilegetqch)”。 (4)题目 4要求“把获得的字符输出到文件中”。在 C+中,用流插入运算符为“”,所以根据题干中的要求在第四个标识下补全写入文件的流操作语句,即“outfilech;”。