1、二级 C+机试-149 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,使它能运行正确的结果。注意:不要改动其他语句,不得增行或删行,也不得更改程序的结构!本程序要求屏幕输出:i=12345注意:语句在/*error*/的下面。修改该语句即可,其他的语句不能修改。试题程序:#includeiostream.h/*error*/class TC()public:/*error*/voidTC()TC(int i)couti=iend1;/*error*/void main()TC ob
2、j(12345);return;(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。完成空出函数 fun(char *s,char *t)部分。函数 fun(char *s,char *t)的功能是将在字符串 s 中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串 t 中,t 中字符按原字符串中字符的顺序排列。例如:当 s 中的字符串为“ABCDEF”时,t 中的字符串应为“AACCEE”。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试
3、题程序:#includeiostream.hvoid fun(char *s,char *t)void main()char s100,t100;cout“Please enter string s:“end1;cin.getline(s,100);fun(s,t);cout“The result is:“tend1;return;(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 3.cpp,其中定义了用于表示 Et 期的类 Date,但类 Date 的定义并不完整,按要求完成下列操作,将类的定义补充完整。(1)定义私有成员
4、变量 year、month、day,分别表示年、月、日,类型为 int。请在注释 1 后添加适当的语句。(2)完成构造函数,分别给 year、month、day 赋值,请在注释 2 后添加适当的语句。(3)完成重载符号“+=”的定义,请在注释 3 后添加适当的语句。(4)完成函数 print 打印函数,如 2005 年 1 月 5 日到屏幕和文件 out3.txt 格式相同,请在注释 4 后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:#includeiostream.h#includefstream#includeiomanip#i
5、ncludecmathusing namespace std;void WriteFile(int c)ofstream out1;out1.open(“out3.txt“,ios_base:app);out1c;out1.close();void WriteFile(char *str)ofstream out1;out1.open(“out3.txt“,ios_base:app);out1str;out1.close();void ClearFile()ofstream out1;out1.open(“out3.txt“);out1.close();class Datepublic:Dat
6、e(int y,int m,int d)/*1*void print();/*2*month+=m;int i=month/12;int j=month%12;if(j=0)year+=(i-1);month=12;elseyear+=i;month=j;return *this;private:/*3*;void Date:print()/*4*WriteFile(year);WriteFile(“年“);WriteFile(month);WriteFile(“月“);WriteFile(day);WriteFile(“日“);int main()ClearFile();Date Natio
7、nal_day(2004,10,5);National_day+=3;National_day.print();return 0;(分数:30.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_二级 C+机试-149 答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,使它能运行正确的结果。注意:不要改动其他语句,不得增行或删行,也不得更改程序的结构!本程序要求屏幕输出:i=12345注意:语句在/*error*/的下面。修改该语句即可,其他的语句不能修改。试题程序:#incl
8、udeiostream.h/*error*/class TC()public:/*error*/voidTC()TC(int i)couti=iend1;/*error*/void main()TC obj(12345);return;(分数:30.00)填空项 1:_ (正确答案:“class TC()”应改为“class TC”。)解析:填空项 1:_ (正确答案:“voidTC()”应改为“TC()”。)解析:填空项 1:_ (正确答案:“”应改为“;”。)解析:解析 本题考查了考生对类的定义了解的情况。类定义类名后不能有括号,所以第 1 处应该是“class TC”。类的析构函数不能有
9、返回类型,所以应改为“TC()”。最容易忽略的地方,就是类定义之后必须跟一个分号。因为类的定义属于类型定义语句,就好像定义一个结构、用 typede关键字定义一个类型的别名一样,其后都要跟语句结束标志“;”。二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。完成空出函数 fun(char *s,char *t)部分。函数 fun(char *s,char *t)的功能是将在字符串 s 中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串 t 中,t 中字符按原字符串中字符的顺序排列。例如:当 s 中的字符串为“ABCDEF
10、”时,t 中的字符串应为“AACCEE”。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#includeiostream.hvoid fun(char *s,char *t)void main()char s100,t100;cout“Please enter string s:“end1;cin.getline(s,100);fun(s,t);cout“The result is:“tend1;return;(分数:40.00)_正确答案:(void fun(char *s,char *t)int i;for(i=0;si!=0;i+)if(i%2=0)ti
11、=si;ti+2=/0;)解析:解析 本题要求将在字符串 s 中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串 t 中,t 中字符按原字符串中字符的顺序排列,也就是说重复出现一次偶数位的字符,数组的下标是从0 开始的,所以会重复第 1、3、5的字符。三、3综合应用题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 3.cpp,其中定义了用于表示 Et 期的类 Date,但类 Date 的定义并不完整,按要求完成下列操作,将类的定义补充完整。(1)定义私有成员变量 year、month、day,分别表示年、月、日,类型为 int。请在注释 1 后添加适
12、当的语句。(2)完成构造函数,分别给 year、month、day 赋值,请在注释 2 后添加适当的语句。(3)完成重载符号“+=”的定义,请在注释 3 后添加适当的语句。(4)完成函数 print 打印函数,如 2005 年 1 月 5 日到屏幕和文件 out3.txt 格式相同,请在注释 4 后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:#includeiostream.h#includefstream#includeiomanip#includecmathusing namespace std;void WriteFile(i
13、nt c)ofstream out1;out1.open(“out3.txt“,ios_base:app);out1c;out1.close();void WriteFile(char *str)ofstream out1;out1.open(“out3.txt“,ios_base:app);out1str;out1.close();void ClearFile()ofstream out1;out1.open(“out3.txt“);out1.close();class Datepublic:Date(int y,int m,int d)/*1*void print();/*2*month+
14、=m;int i=month/12;int j=month%12;if(j=0)year+=(i-1);month=12;elseyear+=i;month=j;return *this;private:/*3*;void Date:print()/*4*WriteFile(year);WriteFile(“年“);WriteFile(month);WriteFile(“月“);WriteFile(day);WriteFile(“日“);int main()ClearFile();Date National_day(2004,10,5);National_day+=3;National_day
15、.print();return 0;(分数:30.00)填空项 1:_ (正确答案:应添加“year=y;month=m;day=d;”。)解析:填空项 1:_ (正确答案:应添加“Dateoperator+=(int m)”。)解析:填空项 1:_ (正确答案:应添加“int year,month,day;”。)解析:填空项 1:_ (正确答案:应添加“coutyear“年“month“月“day“日“end1;”。)解析:解析 本题要求私有成员变量 year、month、day 为整形表示方法,所以注释 3 应添加“int year,month,day;”;注释 1 要求分别给 year、month、day 赋值,根据上下文提意,所以应添加“year=y;month=m;day=d;”;注释 2 是对“+=”运算符的重载,Dateoperator+=(int m);第 4 处打印输出年月日,C+语言中,输出使用 cout。