1、国家二级 C+机试(操作题)模拟试卷 317及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: i=5 i=10 i=15 i=20 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhclass CMyClasspublic: templateclas S T void func(T x,T y) *error* T i=0; if(x=i) i=i+x; else ( i=i+y; co
2、ut“i=“iendl; ;void main() CMyClass t; tfunc(5,0); *error* tfunc(68,(char)i); float i=100; *error* tfunc(i,1); tfunc(5,5);(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成函数 fun(char*str,char*s)空出部分。函数 fun(char*str,char*s)的功能是:将在字符串 str中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串 S中,S 中字符按原字符串中字符的
3、顺序排列。(注意 0为偶数) 例如:当 sttr中的字符串为:“abcdef“时,s 中的字符串应为:“aaccee“。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #include void fun(char*str,char*s) void main() char str100,s100; cout0,此时 i和 x的和为 5,故屏幕输出 i的值为 i=5;第二次调用 func()函数,传入参数为 char型数据,此时 T表示字符型(char),chari=O,680,故 i为 68,屏幕输出 ASCII码为 68的字符,即 i=D;第三次调用 func()函
4、数,传入整型数据 10和 1,此时 T表示整型(int),输出为 i=15,显然如果 i为一般的局部变量,输出应该是 i=10(100,i=10+0=10),这里 i记忆了第一次调用 func()函数后的值(i=5,105,10+5=15),故 i为静态变量,因此第 1个标识下应改为“static T i=0;”。 (2)func0函数两个参数类型一致,从输出结果看,第二次调用 func0传入的参数均是 char型的,故第 2个标识下应改为“tfunc(char)68(char)1);”,(char)68 和(char)1 含义是做强制类型转换,将整型转换成 char型。 (3)第 3个标识下
5、传入参数 1为整型,局部变量 i为 float型,由输出结果可知,第四次调用 func()函数也改变了静态变量 i(static int i)的值,故传入的参数均为整型,因第 3个标识下的局部变量 i(float型)也要强制类型转换,故第 3个标识下应改为“tfunc(int)i,1);”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成函数 fun(char*str,char*s)空出部分。函数 fun(char*str,char*s)的功能是:将在字符串 str中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串 S中
6、,S 中字符按原字符串中字符的顺序排列。(注意 0为偶数) 例如:当 sttr中的字符串为:“abcdef“时,s 中的字符串应为:“aaccee“。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #include void fun(char*str,char*s) void main() char str100,s100; coutm_Other;”语句知道,get 函数具有形参 obj指针。obi 调用 m_Other变量,说明它是 TestClass类型,并且静态函数的定义只要在其前面声明 static就可以了,即第 3个标识下添加“static int get(TestClass*obj)”。 (4)题目 4要求“完成对象 obj对静态函数 get的调用,使得输出 2l到屏幕上”。程序中第 4个标识下的“coutendl;”语句缺少输出值,题目中要求对象对静态函数 get的调用,对象对成员函数的调用格式为:对象名成员函数,即“coutobjget(obj)endl;”。