国家二级C++机试(操作题)模拟试卷256 (题后含答案及解析)
全部题型    2. 基本操作题 3. 简单应用题 4. 综合应用题
基本操作题
1. 使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为:Constructor,i=0,Destructor注意:错误的语句在//******error******的下面,修改该语句即可。#include<iostream.h>class cobj{int i;public:CObj(  );void display(  );~CObj(  );};//********error********CObj:CObj(  ){cout<<Constructor<<;i=0;}//********error********CObj:display(  ){cout<<i=<<i<<¨,weight的所有形式<<endl;}//********error********CObj:CObj(  ){cout<<Destructor<<endl;}void main(  ){CObj a;a.display(  );}
正确答案:(1)CObj::CObj(  )(2)void CObj::display(  )(3)CObj::~CObj(  )
解析:(1)在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符(::),作用域运算符用来表示某个成员属于哪个类,使用格式为:<类名>::<成员函数>(<参
数函数>),因此第1个标识下应改为CObj::CObj(  ),默认构造函数没有参数。(2)第2个标识下“CObj:display(  )”,从其后的语句看,这是在类外实现CObi函数,因此也有作用域运算符使用错误问题,display(  )函数返回值为void,因此第2个标识下应改为void CObj::display(  )。(3)第3个标识下“CObj:CObj(  )”,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名字和类名相同,并在前面加“~”字符,用来与构造函数加以区别,因此第3个标识下应改为CObj::~CObj(  )。 
简单应用题
2. 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,实现函数sort(int A[],int n),用选择排序法把数组从大到小排序。提示:选择排序法的思想是:(1)反复从还未排好的那部分线性表中选择出关键字最小的节点;(2)按照从线性表中选择出的顺序排列节点,重新组成线性表;(3)直到未排序的那部分为空,则重新形成的线性表是一个有序的线性表。补充函数sort(int A[],int n),实现选择排序。注意:请勿改动主函数。#include<iostream.h>#define N10void sort(int A[N],int n){}int main(  ){intA[N]={1,2,i0,5,7,19,34,78,-3,8);sort(A,10);for(int i:0;i<sizeof(A)/sizeof(int);i++){cout<<A[i]<< ;}cout<<endl;return0;}
正确答案:int i,j;for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++){if(A[j]>A[j+1])//如果前面的数比后面的大则进行交换{int t=A[j];//做交换A[j]=A[j+1];A[j+1]=t;}}}
解析:(1)数组A[N]中有n个数,进行n-1趟比较,在每一趟比较中两两比较的次数逐渐减少,比如若有6个数9,8,5,4,2,0。第一次将8和9对调,第二次将第2和第3个数(9和5)对调,……,如此共进行5次,得到8-5-4-2-0-9的顺序,可以看到:最大的数9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0己向上“浮起”一个位置。经第一趟(共5次)后,已得到最大的数。然后进行第二趟比较,对余下的前面5个数按上法进行比较,经过4次比较,得到次大的数8。如此进行下去。可以推知,6个数要比较5趟。在第一趟中要进行两两比较5次,在第二趟中比4次,……第5趟比1次。因此设置两层循环,外层循环变量i从0变化大到n-1,内层循环变量j从0到n-j,在内层循环体内,比较相邻两数,如果前面比后面的大则交换。(2)在内层循环体内,如果前面的元素比后面的元素大,则用一个临时变量记录前面的第j个元素,然后将第j+1个元素赋值给第j个元素,临时变量值赋给第j+1个元素,如此完成两个元素的交换。 
综合应用题
3. 使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:每卖出一个瓜,则计算瓜的重量,还要计算所有卖出瓜的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整(1)定义类Cmelon的私有静态数据成员float型变量totalweight和int型变量totalNo,请在注释//********1********后添加适当的语句。(2)完成类Cmelon的带一个float型变量w的构造函数,并把这个W加到totalweight中,并且totalNo自加。请在注释//********2********后添加适当的语句。(3)在析构函数中,在totalweight中减去weight,然后totalNo自减,请在注释//********3********后添加适当的语句。(4)完成静态成员变量的初始化为0,请在注释//********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#include<iostream.h>class Cmelon{private:float weight;//********1********static int totalNo;public:Cmelon(float W){//********2********totalweight+=W;totalNo++,}~Cmelon(  ){//********3********totalweight-=weight;}void display(  ){cout<<Sellamelonwith<<weight<<kg<<endl;cout<<Total sell number:<<totalNo<<endl;cout<<Totalsellweight:<<totalweight<<kg<<endl<<endl;}};//********4********float Cmelon::totalweight=0.0;int m
ain(  ){Cmeion melonl(1.2);melon1.display(  );Cmelonmelon2(2.3);melon2.display(  );return0;}
正确答案:(1)添力口语句:static float totalweight;(2)添加语句:weight=w;(3)添加语句:totalNo--;(4)添加语句:int Cmelon::totalNo=0;
解析:(1)静态数据成员声明时需使用关键字static,因此第1个标识下应添加“static float totalweight;”。(2)构造函数用来对类成员进行初始化,在Cmelon类的构造函数Cmelon(float w)中,完成weight的初始化,并把这个w加到totalweight中,并且totalNo自加,因此第2个标识下应添加“weight=w:”。(3)调用析构函数相当于退瓜,这时totalweight中减去weight,然后totalNo自减,因此第3个标识下应添加“totalNo--”。(4)静态数据成员的初始化格式为:<数据类型><类名>::<静态数据成员>=<初始值>,因此第4个标识下应添加“int Cmelon::totalNo=0:”。 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。