1、国家二级 C+机试(操作题)模拟试卷 331及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1。程序中位于每个“ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:Name:Smith Age:21 ID:99999 CourseNum:12 Record:970 注意:只修改每个“ERROR *found*”下的那一行,不要改动程序中的其他内容。#includeiostreamUSing namespace std;clasS Stu
2、dentInfoprotected:ERROR*found* char Name; int Age; int ID; int CourseNum; float Record;public: StudentInfo(char*name,int Age,int ID,int courseNum,float record);ERROR*found* voidStudentInfo() float AVerageRecord() return RecordCourseNum; void show()const cout”Name:”Name”Age:”Age”ID:”ID ”CourseNum:”Co
3、urseNum”Record:”Recordendl; ; ERROR*found* StudentInfo StudentInfo(char * Name f int Age ,int ID r int CourseNum, float Record) Name=name; Age=age; thiS 一ID=ID; CourseNum=courSeNum; Record=record; int main() StudentInfo st(”Smith”,21,99999,12,97 0); stshow(); return 0; (分数:2.00)_二、简单应用题(总题数:1,分数:2.0
4、0)2.请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工程 proj2。该工程中包含一个程序文件mainepp,其中有类 Quadritic、类 Root及主函数 main的定义。一个 Quadritic对象表示一个 ax 2 +bx+c的一元二次多项式。一个 Root对象用于表示方程 ax 2 +bx+C=0的一组根,它的数据成员num_of_roots有 3种可能的值,即 0、1 和 2,分别表示根的 3种情况:无实根、有两个相同的实根和有两个不同的实根。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为(注:输出中的 X2表示 x 2
5、): 3X2+4X+5=00 无实根 45X2+6X+2=00 有两个相同的实根:一 0666667 和一 0666667 15X2+2X 一 3=00 有两个不同的实根:0896805 和一 223014 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。 #include #include #include using namespace std; class Root 一元二次方程的根 public: const double x1; 第一个根 const double x2; 第二个根 const int num of roots;不同根的
6、 数量:0、1 或 2 创建一个“无实根”的 Root对象 Root():x1(00),x2(00),num of roots(0) 创建一个“有两个相同的实根”的 Root 对象 Root(double root) *found* :_ 创建一个“有两个不同的实根”的 Root对象 Root(double rootl,double root2):xl (rootl),x2(root2),num of roots(2) void show()const 显示根的信息 cout(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.请使用 VC6或使用【答题】菜单打开考生文件夹 pr
7、oj3下的工程 proj3,其中定义的 Matrix是一个用于表示矩阵的类。成员函数 max_value的功能是求出所有矩阵元素中的最大值。例如,若有 33矩阵 (分数:2.00)_国家二级 C+机试(操作题)模拟试卷 331答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1。程序中位于每个“ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:Name:Smith Age:21 ID:99999 CourseNum:12 Record:9
8、70 注意:只修改每个“ERROR *found*”下的那一行,不要改动程序中的其他内容。#includeiostreamUSing namespace std;clasS StudentInfoprotected:ERROR*found* char Name; int Age; int ID; int CourseNum; float Record;public: StudentInfo(char*name,int Age,int ID,int courseNum,float record);ERROR*found* voidStudentInfo() float AVerageRecord
9、() return RecordCourseNum; void show()const cout”Name:”Name”Age:”Age”ID:”ID ”CourseNum:”CourseNum”Record:”Recordendl; ; ERROR*found* StudentInfo StudentInfo(char * Name f int Age ,int ID r int CourseNum, float Record) Name=name; Age=age; thiS 一ID=ID; CourseNum=courSeNum; Record=record; int main() St
10、udentInfo st(”Smith”,21,99999,12,97 0); stshow(); return 0; (分数:2.00)_正确答案:(正确答案:(1)char*Name; (2)Studentlnfo() (3)Studentlnfo:Studentlnfo(char*name,int age,int IDint courseNumfloat record)解析:解析:(1)主要考查考生对动态数组的掌握,由题目可知 Name应该指向一个动态数组,而不是一个有效 char型字符,因此要定义成 char型指针。 (2)主要考查考生对析构函数的掌握,析构函数不需要函数返回类型,应把
11、 void去掉。 (3)主要考查考生对构造函数定义的掌握,构造函数也要使用作用域符号“:”。二、简单应用题(总题数:1,分数:2.00)2.请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工程 proj2。该工程中包含一个程序文件mainepp,其中有类 Quadritic、类 Root及主函数 main的定义。一个 Quadritic对象表示一个 ax 2 +bx+c的一元二次多项式。一个 Root对象用于表示方程 ax 2 +bx+C=0的一组根,它的数据成员num_of_roots有 3种可能的值,即 0、1 和 2,分别表示根的 3种情况:无实根、有两个相同的实根和有两个
12、不同的实根。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为(注:输出中的 X2表示 x 2 ): 3X2+4X+5=00 无实根 45X2+6X+2=00 有两个相同的实根:一 0666667 和一 0666667 15X2+2X 一 3=00 有两个不同的实根:0896805 和一 223014 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。 #include #include #include using namespace std; class Root 一元二次方程的根 public: const
13、 double x1; 第一个根 const double x2; 第二个根 const int num of roots;不同根的 数量:0、1 或 2 创建一个“无实根”的 Root对象 Root():x1(00),x2(00),num of roots(0) 创建一个“有两个相同的实根”的 Root 对象 Root(double root) *found* :_ 创建一个“有两个不同的实根”的 Root对象 Root(double rootl,double root2):xl (rootl),x2(root2),num of roots(2) void show()const 显示根的信
14、息 cout(分数:2.00)_正确答案:(正确答案:(1)x1(root),x2(root),num_of_roots(1) (2)cout解析:解析:(1)主要考查考生对构造函数的掌握,题目要求创建一个“有两个相同的实根”的 Root对象。说明两个根 x1和 x2相等,根的数量为 1,因此可以得出语句:x1(root),x2(root),num_of_roots(1)。(2)主要考查考生对 switch语句的掌握,在语句 switch(num_of_roots)中,num_of_roots 代表根的数量,当为 0时,表示没有根,因此输出无实根,注意要在句尾加 break。 (3)主要考查考
15、生对构造函数的掌握,本题使用成员初始化列表来构造函数。 (4)主要考查考生对成员函数的掌握,题目要求求两个多项式的差。两个多项式的差就是各个次方的系数相减,因此得出酌:return Quadratic(axa,bXb,cxc);。三、综合应用题(总题数:1,分数:2.00)3.请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中定义的 Matrix是一个用于表示矩阵的类。成员函数 max_value的功能是求出所有矩阵元素中的最大值。例如,若有 33矩阵 (分数:2.00)_正确答案:(正确答案:int temp=0; 定义整数变量 temp,并赋值为零 for(int i=0;iM;i+) 遍历矩阵的行 for(int j=0; jN;j+) 遍历短阵的列 if(temparrayij) 如果temp小于 arrayij temp=arrayij; 把 arrayij赋值给 temp return temp; 返回temp)解析:解析:主要考查考生对二维数组的掌握,题目要求成员函数 max_value的功能是求出所有矩阵元素中的最大值。因此只要逐个元素比较即可,下标 i和 j作为矩阵行和列的标记,使用双层 for循环来遍历数组中的所有元素。