1、二级 C+机试-11 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)1.使用 VC6 打开考生文件夹下的工程 test21_1,此工程包含一个源程序文件 test21_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:The grade is 3源程序文件 test21_1.cpp 清单如下:#includeiostream.hclass studentprivate:int grade;public:/* found*/student(int thegra):(thegra)student()int get_grad
2、e()return grade;void main()int thegra=3;/* found*/student point=new student(thegra);/* found*/cout“The grade is“point.get_grade()endl;delete point;(分数:30.00)填空项 1:_二、2简单应用题(总题数:1,分数:40.00)2.请编写一个函数 char*change(char instr),将输入字符串中的所有小写字母转换为大写字母输出。要求使用 for 循环实现。如输入 jinfeiteng,则输出结果是 JINFEITENG。注意:部分源程
3、序已存在文件 test21_2.cpp 中。请勿修改主函数 main 和其他函数中的任何内容,仅在函数 change 的花括号中填写若干语句。文件 test21_2.cpp 的内容如下:char*change(char instr);#include“iostream.h“void main()char instr50;char *outstr;cout“Input a string:“endl;cininstr;outstr=change(instr);cout“Over graded string:“endl;coutoutstrendl;char*change(char instr)(分
4、数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.cout“Area of this rectangle is: “recta.getarea()endl;(分数:30.00)_二级 C+机试-11 答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)1.使用 VC6 打开考生文件夹下的工程 test21_1,此工程包含一个源程序文件 test21_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:The grade is 3源程序文件 test21_1.cpp 清单如下:#includeiostream.
5、hclass studentprivate:int grade;public:/* found*/student(int thegra):(thegra)student()int get_grade()return grade;void main()int thegra=3;/* found*/student point=new student(thegra);/* found*/cout“The grade is“point.get_grade()endl;delete point;(分数:30.00)填空项 1:_ (正确答案:(1)错误:student(int thegra):(theg
6、ra)正确:student(int thegra):grade(thegra)(2)错误:student point=new student(thegra)正确:student*point=new student(thegra);(3)错误:cout“The grade is“point.get_grade()endl;正确:cout“The grade is“point-get_grade()endl;)解析:解析(1)主要考查考生对于构造函数使用参数列表初始化数据成员的掌握,可以使用参数列表的形式,也可以在函数内部实现,不过参数赋值的双方都必须出现,本题的错误就在于并没有把参数赋值给数据成
7、员;(2)主要考查考生对于使用指针申请动态空间的方法的理解,new 运算符申请的空间返回值为指针类型,指针类型的定义是在变量名前加上“*”;(3)主要考查考生对于对象指针调用成员函数方法的掌握,必须使用符号“-”,而对象本身使用符号“.”。二、2简单应用题(总题数:1,分数:40.00)2.请编写一个函数 char*change(char instr),将输入字符串中的所有小写字母转换为大写字母输出。要求使用 for 循环实现。如输入 jinfeiteng,则输出结果是 JINFEITENG。注意:部分源程序已存在文件 test21_2.cpp 中。请勿修改主函数 main 和其他函数中的任何
8、内容,仅在函数 change 的花括号中填写若干语句。文件 test21_2.cpp 的内容如下:char*change(char instr);#include“iostream.h“void main()char instr50;char *outstr;cout“Input a string:“endl;cininstr;outstr=change(instr);cout“Over graded string:“endl;coutoutstrendl;char*change(char instr)(分数:40.00)_正确答案:(char *change(char instr)char *outstr=new char50;const char delta=A-a;int i;for(i=0;instri!=/0;i+)if(instri =a (分数:30.00)_正确答案:(1) x=dx;y=dy;(2)return2*(a+b);(3)return a*b;(4)double tx,ty;tx=rt.x+rt.a/2.0;)解析:解析本题主要考查考生对于类的定义和友元函数的定义的理解。注意(4)中使用了求开平方的数学函数 sqrt。