1、国家二级 C+机试(操作题)模拟试卷 387及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,请修改程序中的错误,使程序能得出正确的结果: num: 0 num: 1 num: 10 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include int i=10; Class TestClass public: TestClass(int i) cout #include #define MAXLEN 1 02 4 void convert(char*des, char* str, ch
2、ar*str2) void main() char destMAXLEN; charstr=”!&cefghi*! ”; char*str2=”jklm”; convert(dest, str, str2); cout ciass TestClass *1* int m Other; public: TestClass(int i) m Other=i; *3* return m Number+obj一 m Other; ; *2* int main() TestClass obj(11); *4* couti=i+1;或 TestClass: i=i+1:或 (*this) i=i+1; (
3、2)TestClass print(0); (3)couti=i+1; ”或“TestClass: i=i+1; ”或 “(*this) i=i+1; ”。 (3)主函数中通过 “cout”num: “iendl; ”语句实现第三次输出,第三次的输出值为 “0”,并不是题目中要求的 “10”。程序中存在 “int i=10; ”定义,这里应该是调用 “int i=10; ”中的 “i”值。通过域定义符引用这个 “i”,所以修改为“cout”num: ”: iend1; ”。 二、简单应用题 2 【正确答案 】 deS0=0; char temp(2=0, 0); for(int i=0; st
4、ri!=NULL; i+) if(Stri=!) temp0=a; 4换成 a strcat(deS, temp); else i f(stri= ) temp0=b; strcat(deS, temp); 替换成 b else if(stri=“”) strcat(des, str2); 4换成 str2 else temp0=stri; strcat(des, temp); 其他情况则添加在后面 【试题解析】 函数 convert(char*des, char*str,charc,char*str2)的功能是将 str中包含的特定字符替换成其他字符,因此可利用循环搜索 str字符串,找到特
5、定字符后进行替换。 三、综合应用题 3 【正确答案】 (1)添加语句: static int m Number; (2)添加语句: int TestClass: m Number=10; (3)添加语句: static int get(Testclass* obj) (4)将 “cout endl ; ”补充完整为: coutobj get( obj)endl; 【试题解析】 本题中程序的功能是利用 get函数计算对象成员数值的和。在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从己定源程序的 main主函数开始入手,可以看出程序通过调用类TestClass和 get()成员函数实现各种输出操作