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