1、国家二级 C+机试(操作题)模拟试卷 364及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为: Max is 7 提示:max()函数实现找出两个数中的最大值,并作为函数值返回。 注意:错误的语句在*error*的下面,修改该语句即可。 #include using namespace std; *error* int max(int a,int b) if(am_二、简单应用题(总题数:1,分数:2.00)2.使
2、用 VC6打开考生文件夹下的源程序文件 modi2cpp。请实现函数 fun(double b,int len)的如下功能: (1)b是一个数组,长度为 len; (2)b0=0,b1=1; (3)bi+2=bi+bi+1; 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 include void fun(double b,int fen) Void main() double b1 2 8; fun(b,1 2 8); for(int i=0;ibi_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文
3、件 modi3cpp,其中定义了用于表示学生学号的类CStudent1D,但类 CSmdentlD的定义并不完整。 运行结果为: 学生的学号为:200805 学生名为:李伟 删除学生学号为:200805 请按要求完成下列操作,将类 CStudentlD的定义补充完成: (1)定义 class CStudentlD类的私有数据成员 IDvalue表示学生的学号,为 long型的数据。请在注释*1*之后添加适当的语句。 (2)完成默认构造函数 CSmdentlD的定义,使 CSmdentlD对象的默认值为:id=0,并把学生的学号赋给 IDvalue,并输出“赋给学生的学号:”及学号。请在注释*2
4、*之后添加适当的语句。 (3)完成默认析构函数 CStudentlD的定义,使 CStudentlD析构时输出“删除学号:”及学号。请在注释料料料料 3料料料料之后添加适当的语句。 (4)完成默认构造函数 CStudentlnfo的定义。对应两个默认参数:要求定义 char stName,其默认值为“no name”,定义 long stlD,其默认值设为 0,并使它们赋值给相应的类数据成员。请在注释*4*之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includelostreamh#includestringhClass CStudentID *1*定义
5、私有数据成员 public: *2*定义默认构造函数 IDvalue=id; cout“学生的学号为:”IDvalmeendl; *3*定义析构函数 cout“删除学生学号为:”IDvalueendl; ;Class CStudentInfoprivate: CStudentID id; char name20;public: *4*定义默认构造函数完成数据成员初始化 cout“学生名为“stNameendl; strcpy(name,stName); ;void main() CStudentInfo st(“李伟”,200805);(分数:2.00)_国家二级 C+机试(操作题)模拟试卷
6、364答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为: Max is 7 提示:max()函数实现找出两个数中的最大值,并作为函数值返回。 注意:错误的语句在*error*的下面,修改该语句即可。 #include using namespace std; *error* int max(int a,int b) if(am_正确答案:(正确答案:(1)int max(int a,int b) (2)max(m,n
7、);)解析:解析:函数参数传递形式有多种:将变量名作为实参和形参、传递变量的指针和传送引用方式,将变量名作为实参和形参方式,传递是单向的,在函数执行过程中形参的值发生变化不会传回实参,而指针和引用方式在函数执行过程中形参会影响实参。函数 max返回最大值,而在主函数内并没有使用其返回值,而是输出 m值,可知在 max函数类已将最大值存放在 m里,因此 max函数采用的是传递引用方式。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请实现函数 fun(double b,int len)的如下功能: (1)b是一个数组,长度为 len;
8、(2)b0=0,b1=1; (3)bi+2=bi+bi+1; 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 include void fun(double b,int fen) Void main() double b1 2 8; fun(b,1 2 8); for(int i=0;ibi_正确答案:(正确答案:if(1en0)最小值位置 b0=0; 赋值第一个元素 if(1en1) b1=1; 赋值第二个元素 for(int i=2;i1en; i+) bi=bi 一 1+bi一 2;将两个元素之和赋予当前元素)解析:解析:根据题干中
9、给出的要求,从已给部分源程序的 main主函数开始入手,补全函数voidfun(double b,int len)。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示学生学号的类CStudent1D,但类 CSmdentlD的定义并不完整。 运行结果为: 学生的学号为:200805 学生名为:李伟 删除学生学号为:200805 请按要求完成下列操作,将类 CStudentlD的定义补充完成: (1)定义 class CStudentlD类的私有数据成员 IDvalue表示学生的学号,为 long型的数据。请在注释*1*
10、之后添加适当的语句。 (2)完成默认构造函数 CSmdentlD的定义,使 CSmdentlD对象的默认值为:id=0,并把学生的学号赋给 IDvalue,并输出“赋给学生的学号:”及学号。请在注释*2*之后添加适当的语句。 (3)完成默认析构函数 CStudentlD的定义,使 CStudentlD析构时输出“删除学号:”及学号。请在注释料料料料 3料料料料之后添加适当的语句。 (4)完成默认构造函数 CStudentlnfo的定义。对应两个默认参数:要求定义 char stName,其默认值为“no name”,定义 long stlD,其默认值设为 0,并使它们赋值给相应的类数据成员。请
11、在注释*4*之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includelostreamh#includestringhClass CStudentID *1*定义私有数据成员 public: *2*定义默认构造函数 IDvalue=id; cout“学生的学号为:”IDvalmeendl; *3*定义析构函数 cout“删除学生学号为:”IDvalueendl; ;Class CStudentInfoprivate: CStudentID id; char name20;public: *4*定义默认构造函数完成数据成员初始化 cout“学生名为“stN
12、ameendl; strcpy(name,stName); ;void main() CStudentInfo st(“李伟”,200805);(分数:2.00)_正确答案:(正确答案:(1)添加语句:long IDvalue; (2)添加语句:CStudentID(10rlg id=0) (3)添加语句:一 CStudentID() (4)添加语句: CStudent I nfo (char stName= “no name”,long StID=0):id(StID)解析:解析:程序中定义了两个类 CStudentlD和 CStudentlnfo,其中类 CStudentlD包含学生的学号信息的成员变量,有自定义构造函数和默认析构函数,而类 CStudentlnfo不仅包含学生的学号还包括对应的姓名信息的成员变量,还实现了自定义构造函数。