1、国家二级 C+机试(操作题)模拟试卷 439及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 1 5 1 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamh*error*enum Sun, Mon, Tue, Wed, Thu, Fri, Sat, *error*MyEnum;Struct Struct *error* int Fri, int Sun;void main() int i
2、=Mon; MyEnum t=Fri; Struct Str1; Str1Fri=Mon; coutiend1; couttend1; coutstr1Friend1;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 factor(int*des,int&length,int n)实现的功能是:将 n所有因数存放到 des中,通过 length引用返回因数的个数,比如 fator(a,length,20)执行后,则 a:1,2,4,5,10,20),length=6。
3、注意:只能补充函数 factor (),请勿改动其他部分的内容。 #include #define MAXNLEN 100 void factor(int *des,int&length, int n) void main() int aMAXNLEN,length; int n=20; factor(a,length,n); for(int i=0;iai“ “; cout_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义类的私有变量 a、b,请
4、在注释*1*后添加适当的语句。 (2)完成类的构造函数,对变量 a、b 赋值,缺省两个变量值为 1,在注释*2*之后添加语句。 (3)完成打印函数 display(),打印出“a*b=c”格式的一个乘法算式,在注释*3*之后添加语句。 (4)补充主函数,使得打印 99的乘法口诀。在注释*4*后添加语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamhclass CMyFormulaprivate: *1*public: *2* this-a=a; this-b=b; void set(int x,int y) a=x; b=y; void dis
5、play() *3* ;int main() CMyFormula formular(1,1), for(int i=1;i=9;i+) *4* for(int j=1; j+) formularset(j,i), formulardisplay();cout“ “; coutend1; return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 439答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 1 5 1
6、 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamh*error*enum Sun, Mon, Tue, Wed, Thu, Fri, Sat, *error*MyEnum;Struct Struct *error* int Fri, int Sun;void main() int i=Mon; MyEnum t=Fri; Struct Str1; Str1Fri=Mon; coutiend1; couttend1; coutstr1Friend1;(分数:2.00)_正确答案:(正确答案:(1)enum MyEnum (2), (3)int Fri;)
7、解析:解析:(1)第一标识下声明枚举类型,声明枚举类型的一般形式为:“enum枚举类型名枚举常量列表;”,程序当中把枚举类型名 MyEnum放到枚举声明后面,显然不符合枚举类型声明格式,因此第 1个标识下应改成“enum MyEnum”。 (2)由(1)的分析可知,第 2个标识下也不符合枚举类型声明格式,应以“;”结束,即第 2个标识下应改为“;”。 (3)第 3标识处声明结构体,结构体定义的一般形式为: struct结构体名 成员列表 变量名列表; 结构体中成员列表中各个元素是不同的变量,变量之间应以分号隔开,而不是以逗号隔开,因此第 3个标识下应改为为“int Fri;”。二、简单应用题(
8、总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 factor(int*des,int&length,int n)实现的功能是:将 n所有因数存放到 des中,通过 length引用返回因数的个数,比如 fator(a,length,20)执行后,则 a:1,2,4,5,10,20),length=6。 注意:只能补充函数 factor (),请勿改动其他部分的内容。 #include #define MAXNLEN 100 void factor(int *des,int&length, int n)
9、void main() int aMAXNLEN,length; int n=20; factor(a,length,n); for(int i=0;iai“ “; cout_正确答案:(正确答案:length=0; for (int i=1;i=n;i+) if(ni=0)判断是否 n的因数 deslength=i; length+; )解析:解析:(1)找到 n的每一个因数可采用循环方法,循环变量从 I开始到 n,逐个取 n和循环变量的余数。 (2)如果余数为 0说明是 n的因数,添加到 des中,参数 length是采用的引用传递方式,形参的改变会影响实参,因此可直接将 length的值
10、加 1表示 des中元素个数加 1。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义类的私有变量 a、b,请在注释*1*后添加适当的语句。 (2)完成类的构造函数,对变量 a、b 赋值,缺省两个变量值为 1,在注释*2*之后添加语句。 (3)完成打印函数 display(),打印出“a*b=c”格式的一个乘法算式,在注释*3*之后添加语句。 (4)补充主函数,使得打印 99的乘法口诀。在注释*4*后添加语句。 注意:除在指定位置添加语句之外,请不要
11、改动程序中的其他内容。#includeiostreamhclass CMyFormulaprivate: *1*public: *2* this-a=a; this-b=b; void set(int x,int y) a=x; b=y; void display() *3* ;int main() CMyFormula formular(1,1), for(int i=1;i=9;i+) *4* for(int j=1; j+) formularset(j,i), formulardisplay();cout“ “; coutend1; return 0;(分数:2.00)_正确答案:(正确
12、答案:(1)添加语句:int a,b; (2)添加语句:CMyFormula(int a=1,int b=1) (3)添加语句: couta*b=i;j+)解析:解析:(1)第 1个标识下完成 CMyFormula类的私有变量 a、b 的定义,从函数 set(int x,int y)的参数类型可以看出 a和 b均为 int型变量,故第 1个标识下应添加“int a,b:”。 (2)第 2个标识下添加构造函数声明,完成对变量 a、b 赋值,该构造有两个参数 a和 b,且 a和 b缺省值为 1,因此第 2个标识下应添加“CMyFormula(inta=1,int b=1)”。 (3)打印函数 display()在屏幕上打印出“a*b=c格式的一个乘法算式,因此第 3个标识下应添加“couta*b=i,这样保证输出的是倒99口诀,因此第 4个标识下应改为“for(intj=1;j=ij+)”。