1、国家二级 C+机试(操作题)模拟试卷 439及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 1 5 1 注意:错误的语句在 *error*的下面,修改该语句即可。 #include *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
2、; Str1 Fri=Mon; cout #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; i class CMyFormula private: *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
3、 formular(1, 1), for(int i=1; i; ”,程序当中把枚举类型名 MyEnum放到枚举声明后面,显然不符合枚举类 型声明格式,因此第 1个标识下应改成 “enum MyEnum”。 (2)由 (1)的分析可知,第 2个标识下也不符合枚举类型声明格式,应以 “; ”结束,即第 2个标识下应改为 “; ”。 (3)第 3标识处声明结构体,结构体定义的一般形式为: struct ; 结构体中成员列表中各个元素是不同的变量,变量之间应以分号隔开,而不是以逗号隔开,因此第 3个标识下应改为为 “int Fri; ”。 二、简单应用题 2 【正确答案】 length=0; for
4、 (int i=1; i=n; i+) if(n i=0)判断是否 n的因数 deslength=i; length+; 【试题解析】 (1)找到 n的每一个因数可采用循环方法,循环变量从 I开始到 n,逐个取 n和循环变量的余数。 (2)如果余数为 0说明是 n的因数,添加到 des中,参数 length是采用的引用传递方式,形参的改变会影响实参,因此可直接将 length的值加 1表示 des中元素个数加 1。 三、综合应用题 3 【正确答案】 (1)添加语句: int a, b; (2)添加语句: CMyFormula(int a=1, int b=1) (3)添加语句: couta*b
5、=a*b; (4)将 “for(int j=1; j+)”补充完整为: for(int j=1; j=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=a*b: ” (4)观察可知第 4个标识下的 for循环是死循环, j没有判断退出条件,会一直循环下去得不到想到的 99的口诀表,外层循环变量 i从 1开始变化至 9,循环 9次,内部循环变量 j应该从 1变化到 i,输出一行, i=i,这 样保证输出的是倒 99口诀,因此第 4个标识下应改为 “for(intj=1; j=i j+)”。