1、国家二级 C+机试(操作题)模拟试卷 429及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为: Constructor,i=0,Destructor 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhclass CObj int i;public: CObj(); void display(); CObj();*error*CObj:CObj() cout“Constructor“,
2、“; i=0;*error*CObj:display() cout“i=“i“,“end1;*error*CObj:CObj() cout“Destructor“end1;VOid main() CObj a; adisplay();(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,实现函数sort(intAintn),用选择排序法把数组从大到小排序。 提示:选择排序法的思想是: (1)反复从还未排好的那部分线性表中选择出关键字最小的节点; (2)按照从线性表中选择出的顺序排列节点,重新组成线
3、性表; (3)直到未排序的那部分为空,则重新形成的线性表是一个有序的线性表。补充函数sort(intA,int n),实现选择排序。注意:请勿改动主函数。#includeiostreamh#define N 10void sort(int AN,int n)int main() int AN=1,2,10,5,7,19,34,78,3,8; Sort(A,10); for(int i=0;isizeof(A)sizeof(int);i+) coutAi ; coutend1; return 0;(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源
4、程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: 每卖出一个瓜,则计算瓜的重量,还要计算所有卖出瓜的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整 (1)定义类 Cmelon的私有静态数据成员float型变量 totalweight和 int型变量 totalNo,请在注释*1*后添加适当的语句。 (2)完成类 Cmelon的带一个 float型变量 w的构造函数,并把这个 w加到 totalweight中,并且 totalNo自加。请在注释*2*后添加适当的语句。 (3)在析构函数中,在 totalweight中减去we
5、ight,然后 totalNo自减,请在注释*3*后添加适当的语句。 (4)完成静态成员变量的初始化为 0,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass Cmelonprivate: float weight; *1* Static int totaiNo;public: Cmelon(float w) *2* totalweight +=w; totalNo+; Cmelon() *3* totalweight =-=weight; void display() cout;“Se
6、ll a melon with“weight“kg“end1; cout: “Total sellnumber:“totaiNoend1; cout: “Total sellweight:“totalweight“kg“end1end1; ;*4*float:Cmelon:totalweight=00;int main () Cmelon melonl(12); melonldisplay(); Cmelon melon2(23); melon2display(); return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 429答案解析(总分:6.00,做题时间:90 分钟
7、)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为: Constructor,i=0,Destructor 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhclass CObj int i;public: CObj(); void display(); CObj();*error*CObj:CObj() cout“Constructor“,“; i=0;*error*CObj:display() cout“i=“i“,“end1;
8、*error*CObj:CObj() cout“Destructor“end1;VOid main() CObj a; adisplay();(分数:2.00)_正确答案:(正确答案:(1)CObj:CObj() (2)void CObj:display() (3)CObj:CObj()解析:解析:(1)在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符(:),作用域运算符用来表示某个成员属于哪个类,使用格式为:类名:成员函数(参数函数),因此第 1个标识下应改为 CObj:CObj(),默认构造函数没有参数。 (2)第 2个标识下“CObj:display()”,从其后的语句
9、看,这是在类外实现 CObj函数,因此也有作用域运算符使用错误问题,display()函数返回值为 void,因此第 2个标识下应改为 void CObj:display()。 (3)第 3个标识下“CObj:CObj()”,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名字和类名相同,并在前面加“”字符,用来与构造函数加以区别,因此第 3个标识下应改为 CObj:CObj()。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,实现函数sort(intAintn),用选择排序法把数组从大到小排序。
10、提示:选择排序法的思想是: (1)反复从还未排好的那部分线性表中选择出关键字最小的节点; (2)按照从线性表中选择出的顺序排列节点,重新组成线性表; (3)直到未排序的那部分为空,则重新形成的线性表是一个有序的线性表。补充函数sort(intA,int n),实现选择排序。注意:请勿改动主函数。#includeiostreamh#define N 10void sort(int AN,int n)int main() int AN=1,2,10,5,7,19,34,78,3,8; Sort(A,10); for(int i=0;isizeof(A)sizeof(int);i+) coutAi
11、; coutend1; return 0;(分数:2.00)_正确答案:(正确答案:int i,j; for (i=0;in-1;i+) for (j=0;jn-1-i;j+) if (AjAj+1) 如果前面的数比后面的大则进行交换 int t=Aj;做交换 Aj =Aj+1; Aj+1 =t; )解析:解析:(1)数组 AN中有 n个数,进行 n-1趟比较,在每一趟比较中两两比较的次数逐渐减少,比如若有 6个数 9,8,5,4,2,0。第一次将 8和 9对调,第二次将第 2和第 3个数(9 和 5)对调,如此共进行 5次,得到 8-5-4-2-0-9的顺序,可以看到:最大的数 9已“沉底”
12、,成为最下面一个数,而小的数“上升”。最小的数 0已向上“浮起”一个位置。经第一趟(共 5次)后,已得到最大的数。然后进行第二趟比较,对余下的前面 5个数按上法进行比较,经过 4次比较,得到次大的数 8。如此进行下去。可以推知,6 个数要比较 5趟。在第一趟中要进行两两比较 5次,在第二趟中比 4次,第 5趟比 1次。因此设置两层循环,外层循环变量 i从 0变化大到 n-1,内层循环变量 j从 0到 n-j,在内层循环体内,比较相邻两数,如果前面比后面的大则交换。 (2)在内层循环体内,如果前面的元素比后面的元素大,则用一个临时变量记录前面的第 i个元素,然后将第 j+1个元素赋值给第 j个元
13、素,临时变量值赋给第 j+1个元素,如此完成两个元素的交换。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: 每卖出一个瓜,则计算瓜的重量,还要计算所有卖出瓜的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整 (1)定义类 Cmelon的私有静态数据成员float型变量 totalweight和 int型变量 totalNo,请在注释*1*后添加适当的语句。 (2)完成类 Cmelon的带一个 float型变量 w的构造函数,并把这个 w加到 t
14、otalweight中,并且 totalNo自加。请在注释*2*后添加适当的语句。 (3)在析构函数中,在 totalweight中减去weight,然后 totalNo自减,请在注释*3*后添加适当的语句。 (4)完成静态成员变量的初始化为 0,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass Cmelonprivate: float weight; *1* Static int totaiNo;public: Cmelon(float w) *2* totalweight +=w;
15、 totalNo+; Cmelon() *3* totalweight =-=weight; void display() cout;“Sell a melon with“weight“kg“end1; cout: “Total sellnumber:“totaiNoend1; cout: “Total sellweight:“totalweight“kg“end1end1; ;*4*float:Cmelon:totalweight=00;int main () Cmelon melonl(12); melonldisplay(); Cmelon melon2(23); melon2displ
16、ay(); return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:static float totalweight; (2)添加语句:weight=w; (3)添加语句:totalNo-; (4)添加语句:int Cmelon:totalNo=0;)解析:解析:(1)静态数据成员声明时需使用关键字 static,因此第 1个标识下应添加“static floattotalweight;”。 (2)构造函数用来对类成员进行初始化,在 Cmelon类的构造函数 Cmelon(float w)中,完成 weight的初始化,并把这个 w加到 totalweight中,并且 totalNo自加,因此第 2个标识下应添加“weight=w;”。 (3)调用析构函数相当于退瓜,这时 totalweight中减去 weight,然后 totalNo自减,因此第 3个标识下应添加“totalNo-;”。 (4)静态数据成员的初始化格式为:数据类型类名:静态数据成员=初始值,因此第 4个标识下应添加“int Cmelon:totalNo=0:”。