1、全国计算机等级考试二级 C+上机题库试卷七 2013 年及答案解析(总分:3.00,做题时间:90 分钟)1.改错题 使用 VC6 打开考生文件夹下的工程 kt12_1,此工程包含一个源程序文件 kt12_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为: 100 源程序文件 kt12_1.cpp 清单如下: #include template classpair Tvalue1,value2; public: pair(Tfirst,Tsecond) value1=first;value2=second; /*found*/ chargetmax(); ; /*fou
2、nd*/ Tpair:getmax() Tretval; /*found*/ retval=value1value2?value1:value2; returnretval; voidmain() pairmyobject(100,75); coutvalue2?value1:value2; returnretval; voidmain() pairmyobject(100,75); coutvalue2? value1 : value2; 改为:retval = value1value2? value1 : value2;)解析:(1)主要考查对模板使用的理解,该函数属于模板类定义的一部分,
3、对于返回值类型,应该使用模板类名称 T,这样编译的时候才能被接受; (2)主要考查是模板的使用,前面的模板类已经声明完成了,在类的外面定义类的成 员函数时仍然需要使用模板的声明,这样在后面的函数定义体中才能使用模板类; (3)主要考查对“表达式 1? 表达式 2 : 表达式 3”语句的掌握,这个语句是一个复合语句,先计算第一个表达式,如果为真则整个式子值为表达式 2 的值,否则为表达式 3 的值,题目中错误的使用了两个问号。2.简单应用题 请编写函数 fun(),其功能是将 s 所指字符串中除了下标为奇数、同时 ASCII 值也为奇数的字符之外,其余的所有字符都删除。字符串中剩余的字符所形成的
4、一个新的字符串放在 t 所指的数组中。例如:s 所指字符串中的内容为 ABCDEFG12345,其中字符 A 的 ASCII 码值虽为奇数,但元素所在的下标为偶数,因此必需删除;字符 1 的 ASCII 码值为奇数,所在数组中的下标也为奇数,不删除,最后 t 所指的数组中的内容应是 135。 请勿修改主函数 main 和其他函数中的任何内容,仅在函数 su 的花括号中填写若干语句。 文件 kt12_2.cpp 的内容如下: #include #include #include #include voidfun(char*s,chart) voidmain() chars100,t100; cout=num|i解析:主要考查对一个特殊的类-安全数组的掌握,其中涉及了友元函数、重载函数等,其中(2)中必需申请新的空间,这样可以使得两个对象分别占用不同的两个空间,在自动调用析构函数时不会遇到重复删除的问题,这种方法要掌握。