1、国家二级 C+机试(操作题)模拟试卷 385及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: sizeof(str1)=5 sizeof(str2)=10 sizeof(str3)=1 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构, 错误的语句在*error*的下面。 (1)不能删除 assert()语句: (2)只能修改后面的数字。 提示:assert()函数如果为假,则会产生一个中断异
2、常。 #include #include void main() char*str1=“abc”; *error* assert(sizeof(Str1)=3); cout_二、简单应用题(总题数: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 0,请勿改动其他部分的内容。 #include #define MAXNLEN 100 void factor(int*des,int&length,int n) void main() int aMAXNLEN,length; int n=2 0; factor(a,length,n); for(int i=0;iai_三、综合应用题(总题数:1,分数:2.00)3.用 VC6打开考生文件夹下的源程序文件 modi3cpp,这个程序完成输出到屏幕一些特定的信息,但工程有错误或者不完整,请完成以下功能:(1)初始化 m Num2的值为 j,请在注释*1*后添加适当的语句。(2
4、)补充全局函数 fun()使之能够调用类 TestClass的成员变量,请在注释*2*后添加适当的语句。(3)初始化静态变量, 请在注释*3*后添加适当的语句。(4)修改注释*4*后的语句。使得程序输出以下内容: mNum1=1 mNum2=2 mNum3=1 mNum1=4 mNum2=2 mNum3=7注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。#includeiostreamhClass TeStClasspublic:*1*TestClass(int i,int j) m Numl=i; m Num3+=i; void Print() cout“m
5、Num1=”m Numlendl; cout“m Num2=”m Num2endl; cout“m Num3=”m Num3endl; void Add(int i) m Num3+=i; private: int m Numl; const int m Num2; Static int m Num3; *2* ; *3* Void fun() TeStClass Num(1,2); Numm Numl=4; *4* NumAdd(); NumPrint(); void main() TeStClass Num(1,2); NumPrint(); fun(); return;(分数:2.00)
6、_国家二级 C+机试(操作题)模拟试卷 385答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: sizeof(str1)=5 sizeof(str2)=10 sizeof(str3)=1 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构, 错误的语句在*error*的下面。 (1)不能删除 assert()语句: (2)只能修改后面的数字。 提示:assert()函数如果为假,则会产生一个中断异
7、常。 #include #include void main() char*str1=“abc”; *error* assert(sizeof(Str1)=3); cout_正确答案:(正确答案:(1)assert(Si zeof(str1)=4); (2)assert(Sizeof(str2)=10); (3)assert(Sizeof(str3)=1);)解析:解析:本题的功能是利用 assert()函数,则会产生一个中断异常。从已定源程序的 main主函数开始入手,依次执行程序中的语句,输出题目中要求的输出值。本题在调试的时候并不会产生错误,它的错误是逻辑错误。二、简单应用题(总题数:1
8、,分数: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 0,请勿改动其他部分的内容。 #include #define MAXNLEN 100 void factor(int*des,int&length,int n) void main
9、() int aMAXNLEN,length; int n=2 0; factor(a,length,n); for(int i=0;iai_正确答案:(正确答案:length=0; for (int i=1;i=n;i+) if(ni=0)判断是否 n的因数 deslength=i; length+; )解析:解析:函数 factor(int*des,int&length,int n)实现的功能是将 n所有因数存放到 des中,通过 length引用返回因数的个数,求因数可采用取余数的方法,如果两数相除余数为 0则说明除数是被除数的因数。三、综合应用题(总题数:1,分数:2.00)3.用 V
10、C6打开考生文件夹下的源程序文件 modi3cpp,这个程序完成输出到屏幕一些特定的信息,但工程有错误或者不完整,请完成以下功能:(1)初始化 m Num2的值为 j,请在注释*1*后添加适当的语句。(2)补充全局函数 fun()使之能够调用类 TestClass的成员变量,请在注释*2*后添加适当的语句。(3)初始化静态变量, 请在注释*3*后添加适当的语句。(4)修改注释*4*后的语句。使得程序输出以下内容: mNum1=1 mNum2=2 mNum3=1 mNum1=4 mNum2=2 mNum3=7注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。#inc
11、ludeiostreamhClass TeStClasspublic:*1*TestClass(int i,int j) m Numl=i; m Num3+=i; void Print() cout“m Num1=”m Numlendl; cout“m Num2=”m Num2endl; cout“m Num3=”m Num3endl; void Add(int i) m Num3+=i; private: int m Numl; const int m Num2; Static int m Num3; *2* ; *3* Void fun() TeStClass Num(1,2); Numm
12、 Numl=4; *4* NumAdd(); NumPrint(); void main() TeStClass Num(1,2); NumPrint(); fun(); return;(分数:2.00)_正确答案:(正确答案:(1)添加语句:TeStClas S(int i,int j):mNum2(j) (2)添加语句:friend void fun(); (3)添加语句:int TestClass:mNum3=0; (4)将“NumAdd();”补充完整为:NumAdd(5);)解析:解析:在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从己给定源程序的 main主函数开始入手,可以看出程序通过调用类 TestClass和函数 fun实现各种输出操作。