1、二级 C+机试-24 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:33.00)1.使用 VC6 打开老考生文件夹下的工程 test5_1,此工程包含一个源程序文件 test5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:x=3 y=5 z=08源程序文件 test5_1.cpp 清单如下:#includeiostream.hstatic int x=5;int z=0;int *add(int x,int y)cout“X=“X“ y=“y“ Z=“zendl;z=z+x+y;*found*return z;*found*
2、;void main()int y=5;int x=3;*found*cout(分数:33.00)填空项 1:_二、2简单应用题(总题数:1,分数:33.00)2.请编写函数 void swap(int *px,int *py)与 void swap(int swap(a,b);couta“ “bendl;swap(couta“ “bendl;(分数:33.00)_三、3综合应用题(总题数:1,分数:34.00)3.使用 VC6 打开考生文件夹下的工程 test5_3。此工程包含一个源程序文件 test5_3.cpp,其中定义了一个类 Pn,用于求 n!。请按要求完成下列操作,将程序补充完整。
3、(1)定义私有数据成员 value(存放 n)和 fact(存放 n!),它们都是 int 型的数据。请在注释“/*1*”之后添加适当的语句。(2)完成默认构造函数 Fn 的定义,使 Fn 对象的数据成员 value 值为 i,fact 值为 1。请在注释“/*2*”之后添加适当的语句。(3)完成函数 Cal 的定义,该函数计算 value 的阶乘,并将运算结果保存在 fact 中,要求使用 while 循环实现。请在注释“/*3*”之后添加适当的语句。(4)将主函数补充完整,直接调用类的成员函数,在界面上输出 value 的阶乘值。请在注释“/*4*”之后添加适当的语句。注意;除在指定位置添
4、加语句之外,请不要改动程序中的其他内容。源程序文件 test5_3.cpp 清单如下:#includeiostream.hclass Fn/*1*public:Fn(int i);void Cal();void disp();Fn:Fn(int i)/*2*void Fn:Cai()/*3*fact*=i-;void Fn:disp()coutvalue“!=“factendl;void main()int value;cout“Enter the value:“;cinvalue;Fn A(value);/*4*(分数:34.00)_二级 C+机试-24 答案解析(总分:100.00,做题时
5、间:90 分钟)一、1改错题(总题数:1,分数:33.00)1.使用 VC6 打开老考生文件夹下的工程 test5_1,此工程包含一个源程序文件 test5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:x=3 y=5 z=08源程序文件 test5_1.cpp 清单如下:#includeiostream.hstatic int x=5;int z=0;int *add(int x,int y)cout“X=“X“ y=“y“ Z=“zendl;z=z+x+y;*found*return z;*found*;void main()int y=5;int x=3;*f
6、ound*cout(分数:33.00)填空项 1:_ (正确答案:(1)错误:return z;正确:return (2)错误:;正确:(3)错误:cout正确:cout*(add(x,y)endl;)解析:解析(1)主要考查考生对于函数返回类型的掌握,该函数的返回值应该是指向 int 型的指针,所以应该将地址作为返回值:(2)主要考查考生对于类定义格式与函数定义格式区别的掌握,类的定义最后应该使用“;”而函数不需要用“;”;(3)主要考查考生对于有返回值的函数调用的掌握,函数定义是返回指针型的,调用的时候就应该使用取地址符号。二、2简单应用题(总题数:1,分数:33.00)2.请编写函数 v
7、oid swap(int *px,int *py)与 void swap(int swap(a,b);couta“ “bendl;swap(couta“ “bendl;(分数:33.00)_正确答案:(1)void swap(int *px,int *py)int temp;temp=*px;*px=*py;*py=temp;(2)void swap(int temp=px;px=Py;py=temp;)解析:解析 本题主要考查点是函数的参数传递,指针与引用的区别。指针存放的是它指向的数据的地址,而引用就是给变 量起一个别名,两者都是传址调用。调用指针,实参需要使用取地址void Cal();
8、void disp();Fn:Fn(int i)/*2*void Fn:Cai()/*3*fact*=i-;void Fn:disp()coutvalue“!=“factendl;void main()int value;cout“Enter the value:“;cinvalue;Fn A(value);/*4*(分数:34.00)_正确答案:(1)int value;int fact;(2)value=i;fact=1;(3)int i=value;while(i1)(4)A.Cal();A.disp();)解析:解析 主要考查考生对类和对象的综合掌握,该题涉及类的成员对象与成员函数的定义,类成员函数的外部调用等知识点。注意(3)中 while 语句的使用,当满足括号中表达式的条件时,就一直执行后面或者后面花括号中的语句,直到不满足时跳出。