1、国家二级 C+机试(操作题)模拟试卷 440 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modi1cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 1 0 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhstruct Struct union int a; char c4; ; int b; *error*void main() Struct m; *error* mc0=0; mc1=0; mc2=0; *error* mc3=1;
2、 mb=mc3; coutmaend1mbend1;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6 打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 convert(char*des,char*str,char c,char*str2)的功能是: 如果 str 中包含字符“!”,则替换成a; 如果 str 中包含字符“&”,则替换成b; 如果 str 中包含字符“*”,则替换成 str2。 并用函数返回目标转换后的指针。 注意:只能补充函数 convert(char*des,char*str,char*str2)。
3、#include #include #define MAXLEN 1024 void convert(char *des,char * str,char *str2) void main() char destMAXLEN; char*str=”!&cefghi*!&“; char*str2=“jklm“; convert(dest,str,str2); coutdest_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义私有常量 PI,请在注释*
4、1*后添加适当的语句。 (2)完成类的私有常量 PI 的赋值,以及完成对半径 radius 的赋值。请在注释*2*后添加适当的语句。 (3)完成计算圆面积的函数 GetArea()。请在注释*3*后添加适当的语句。 (4)完成计算圆周长的函数 GetGirth()。请在注释*4*后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamh#define CONST_PI 3141592class CCircleprivate: double radius; *1*public: *2* CCircle(int radius) this-ra
5、dius=radius; double GetArea() *3* ) double GetGirth() *4* void SetRadius(int m) radius=m; ;int main() CCircle circle(5);coutcircleGetArea()end1; coutcircleGetGirth()end1; circleSetRadius(10); coutcircleGetArea()end1; coutcircleGetGirth()end1; return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 440 答案解析(总分:6.00,做题
6、时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modi1cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 1 0 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhstruct Struct union int a; char c4; ; int b; *error*void main() Struct m; *error* mc0=0; mc1=0; mc2=0; *error* mc3=1; mb=mc3; coutmaend1mbend1;(分数:2.00)_正确答
7、案:(正确答案:(1); (2)mc0=1; (3)mc3=0;)解析:解析:(1)第 1 表示在结构体定义内,结构体定义的一般形式为: struct结构体名 成员列表 变量名列表; 这里定义的结构体并没有变量名列表,但是结构体定义一定是以“;”结束的,因此第 1 个标识下应改为“;”。 (2)根据题目要求程序输出结果分别为“1”和“0”,即结构体变量 m 的成员变量 a 的值为 1,b 的值为 0,又 a 和字符数组 c4存放在同一段内存单元中,因此 a 的值可由数组 c4决定(两者使用同一地址单元),故 c0表示 a 的低 8 位,c1为 a 的第二个 8 位,c2为a 的第三个 8 位,
8、c3为 a 的最高 8 位,a=0,所以 c0=1,c1=c2=c3=0,故第 2 个标识下应改为“mc0=1;”。 (3)由(2)分析可知第 3 个标识下应改为“mc3=0:”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6 打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 convert(char*des,char*str,char c,char*str2)的功能是: 如果 str 中包含字符“!”,则替换成a; 如果 str 中包含字符“&”,则替换成b; 如果 str 中包含字符“*”,则替换成 str2。 并用函数返回目标转换
9、后的指针。 注意:只能补充函数 convert(char*des,char*str,char*str2)。 #include #include #define MAXLEN 1024 void convert(char *des,char * str,char *str2) void main() char destMAXLEN; char*str=”!&cefghi*!&“; char*str2=“jklm“; convert(dest,str,str2); coutdest_正确答案:(正确答案:des0=0; char temp2=0,0; for(int i=0;stri!=NULL;
10、i+) if(stri=!) temp0=a; 替换成a strcat(des,temp); else if (stri=&) temp0=b; strcat(des,temp); 替换成b else if(stri:=*) strcat(des,str2);替换成 str2 ) else temp0=stri; strcat(des,temp); 其他情况则添加在后面 )解析:解析:(1)由审题分析可知,利用循环中不断检索 str 字符串每一个字符,循环变量 i 从 0 开始,直到到了 str 字符结束,即 srti=NULL 为循环判断结束条件。 (2)在循环体内,用 if else 语句
11、判断是不是“!”、“&”或“*”这些特定的字符,如果是这些特定的字符则进行相应的替换,如果不是则将该字符直接加在 des 后面。 (3)字符串的连接可以使用字符串连接函数 strcat(),将新字符连接在 des 后面,即 strcat(des,temp)。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义私有常量 PI,请在注释*1*后添加适当的语句。 (2)完成类的私有常量 PI 的赋值,以及完成对半径 radius 的赋值。请在注释*2*后添
12、加适当的语句。 (3)完成计算圆面积的函数 GetArea()。请在注释*3*后添加适当的语句。 (4)完成计算圆周长的函数 GetGirth()。请在注释*4*后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamh#define CONST_PI 3141592class CCircleprivate: double radius; *1*public: *2* CCircle(int radius) this-radius=radius; double GetArea() *3* ) double GetGirth() *4* v
13、oid SetRadius(int m) radius=m; ;int main() CCircle circle(5);coutcircleGetArea()end1; coutcircleGetGirth()end1; circleSetRadius(10); coutcircleGetArea()end1; coutcircleGetGirth()end1; return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:const double PI; (2)将“CCircle(int radius)”补充完整为:CCircle(int radius):PI(CONST_P
14、I) (3)添加语句:return radius*radius*PI; (4)添加语句:return 2*radius*PI;)解析:解析:(1)第 1 个标识下定义私有常量 PI,常数据成员是使用 const 说明的数据成员,因此第 1 个标识下应添加“const double PI;”。 (2)常数据成员的初始化只能通过构造函数的成员初始化列表进行,构造函数 CCircle(int radius)应对常数据成员 PI 进行初始化,第 2 个标识下应改为“CCircle(int radius):PI(CONST_PI)”。 (3)第 3 个标识下返回圆面积值,圆面积为半径平方与 PI 的乘积值,即第 3标识下应添加“returnradius*radius*PI;”。 (4)第 4 个标识下返回周长,即第 4 表示下应添加“return 2*radius*PI;”。