1、二级 C+机试-154 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,该程序运行时有错误,请改正错误,使得程序输出:Hellotest注意:不要改动 main 函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:#includeiostream/*error*template(T)void fun(T t)std:cout“test“std:end1;/*error*templateboolvoid fun(bool t)std:cout(t
2、?“Hello“:“Hi“)std:end1;int main()/*error*bool flag=TRUE;fun(flag);fun(int)flag);return 0;(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。请完成函数 fun(char *s),使其具有以下功能:(1)把 s 中的大写字母转换成小写字母,把其中的小写字母转换成大写字母,并且在函数中调用写函数WriteFile()将结果输出到 2.txt 文件中。例如:s=“helloWORLD“,则
3、结果为“s=“HELLOworld“”。(2)完成函数 WriteFile(char *s),把字符串输入文件中。提示:打开文件使用的第二参数为“ios_base:binary|los_base:app”。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#includeiostream#includefstream#includecmathusing namespace std;void WriteFile(char *s)void fun(char *s)void ClearFile()ofstream out1;out1.open(“2.txt“);out1
4、.close();int main()ClearFile();char s1024;cout“please input a string:“end1;cin.getline(s,1024);fun(s);return 0;(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使其输出的结果为TCATCBTCC(1)完成类 B 虚继承于 A,请在注释 1 后添加适当的语句。(2)完成类 C 虚继承于 A,请在注释 2 后添加适当的语句。(3)完成类 D 继承
5、于 B,C,请在注释 3 后添加适当的语句。(4)函数 fun 通过调用基类的 fun,完成所输出的内容,请在注释 4 后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeiostream.hclass TCApublic:void fun()cout“TCA“end1;/*1*class TCBpublic:void fun()cout“TCB“end1;/*2*class TCCpublic:void fun()cout“TCC“end1;/*3*class TCDpublic:void fun()/*4*;void mai
6、n()TCD test;test.fun();return;(分数:30.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_二级 C+机试-154 答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,该程序运行时有错误,请改正错误,使得程序输出:Hellotest注意:不要改动 main 函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:#includeiostream/*error*template(T)void fun(T t)st
7、d:cout“test“std:end1;/*error*templateboolvoid fun(bool t)std:cout(t?“Hello“:“Hi“)std:end1;int main()/*error*bool flag=TRUE;fun(flag);fun(int)flag);return 0;(分数:30.00)填空项 1:_ (正确答案:应改为“templateclass T”。)解析:填空项 1:_ (正确答案:删除“templatebool”。)解析:填空项 1:_ (正确答案:应改为“bool flag=true;”。)解析:解析 C+中的模板类格式为 templat
8、eclass T,所以第 1 处的语句“template(T)”应修改为“templateclass T”。在第 2 处的“void fun(bool t)”函数中,t 变量为布尔型变量,是 C+中的基础变量,不是模板变量,没有使用到模板类,所以删除第 2 处的模板类型定义语句。第 3 处的“bool flag=TRUE;”是声明布尔型变量 flag,并将其值赋为逻辑真。而 TRUE 并不是合法值,C+中区分大小写,所以逻辑真值应为 true,即“bool flag=true;”。二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。
9、请完成函数 fun(char *s),使其具有以下功能:(1)把 s 中的大写字母转换成小写字母,把其中的小写字母转换成大写字母,并且在函数中调用写函数WriteFile()将结果输出到 2.txt 文件中。例如:s=“helloWORLD“,则结果为“s=“HELLOworld“”。(2)完成函数 WriteFile(char *s),把字符串输入文件中。提示:打开文件使用的第二参数为“ios_base:binary|los_base:app”。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#includeiostream#includefstream#in
10、cludecmathusing namespace std;void WriteFile(char *s)void fun(char *s)void ClearFile()ofstream out1;out1.open(“2.txt“);out1.close();int main()ClearFile();char s1024;cout“please input a string:“end1;cin.getline(s,1024);fun(s);return 0;(分数:40.00)_正确答案:(1)void WriteFile(char *s)中的命令语句:ofstream out1;out
11、1.open(“2.txt“,ios_base:binary|ios_base:app);/打开文件 2.txtout1s;/写入字符串 sout1.close();(2)void fun(char *s)中的命令语句:for(int i=0;si!=0;i+) /循环判断每一个字符if(si)=Asi(=z) /如果是大写字符,则转换为小写字符si=si-A+a; /si-A+a等于字符 si+32else if(sill=asi(=z)/如果是小写字符,则转换为大写字符si=si-a+A; /si-a+A等于字符 si-32WriteFile(s);)解析:解析 在 writeFile(c
12、har *s)函数中,利用标准流 ofstream 实现字符串写入文件 2.txt。在 fun函数中,利用 for 循环逐个判断字符是大写还是小写。如果是大写,那么加上 32 实现大写转换为小写。否则就减去 32,实现小写到大写的转换。最后调用前面实现的 WriteFile 函数,将字符串写入文件。三、3综合应用题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使其输出的结果为TCATCBTCC(1)完成类 B 虚继承于 A,请在注释 1 后添加适当的语句。(2)完成类 C 虚继承于 A
13、,请在注释 2 后添加适当的语句。(3)完成类 D 继承于 B,C,请在注释 3 后添加适当的语句。(4)函数 fun 通过调用基类的 fun,完成所输出的内容,请在注释 4 后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeiostream.hclass TCApublic:void fun()cout“TCA“end1;/*1*class TCBpublic:void fun()cout“TCB“end1;/*2*class TCCpublic:void fun()cout“TCC“end1;/*3*class TCDpu
14、blic:void fun()/*4*;void main()TCD test;test.fun();return;(分数:30.00)填空项 1:_ (正确答案:将“class TCB:”补充完整为“class TCB:virtual public TCA”。)解析:填空项 1:_ (正确答案:将“class TCC:”补充完整为“class TCC:virtual public TCA”。)解析:填空项 1:_ (正确答案:将“class TCD:”补充完整为“class TCD:public TCB,public TCC”。)解析:填空项 1:_ (正确答案:应添加“TCA:fun();
15、TCB:fun();TCC:fun();”。)解析:解析 本题中第 1 处要求“完成类 B 虚继承于 A”。在 C+中,声明虚基类的一般形式为:class派生类名:virtual 继承方式基类名,由题目知道 TCA 为基类,TCB 为派生类,所以第 1 处的语句修改为“class TCB:virtual public TCA”。根据第 2 处和第 3 处的要求将标识 2 和 3 下的语句修改为“class TCC:virtual public TCA”和“class TCD:public TCB,public TCC”。第 4 处要求“函数 fun 通过调用基类的 fun,完成所输出的内容”。在 C+中调用基类的成员函数,要使用作用域限定符“:”,类名 A:函数 fun,就是调用类 A 的函数 fun,根据题目中的要求补全对类 TCA、TCB 以及 TCC 中的 fun 函数,即“TCA:fun();TCB:fun();TCC:fun();”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1