第 1 页:上机试题 |
第 3 页:参考答案 |
一、程序改错题
(1)应改为“TC::TC()”。
(2)应改为“voidTC::display()”。
(3)应改为“TC::~TC()”。
【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名)::<成员函数>((参数函数)),因此第1处应改为“TC::TC()”,默认构造函数没有参数。由第2处“TC::display()”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void,因此第2处的语句应改为“voidTC::display()”。由第3处的语句“TC::TC()”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC::~TC()”。
二、简单应用题
inti,j;
for(i=O;i {
for(j=0;j {
if(A[j]>A[j+1])//如果前面的数比后面的大则
进行交换
{
intt=A[j];//进行交换
A[j]=A[j+1];
A[j+1]=t;
}
}
}
【解析】数组A[N]中有n个数,进行n-1次比较,在每一次比较中两两比较的次数逐渐减少,比如若有6个数9,
8,5,4,2,0。第一次将8和9对调,第二次将第2个数9和第3个数5对调,如此共进行5次,得到8-5-4-2-0-9的顺序,可以看到:最大的数9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已向上“浮起”一个位置。经第一趟(共5次)后,已得到最大的数,然后进行第二趟比较,对余下的前面5个数按上面的方法进行比较,经过4次比较,得到次大的数8。如此进行下去。可以推知,6个数要比较5趟。在第一趟中要进行两两比较5次,在第二趟中比较4次,……第5趟比较1次。因此设置两层循环,外层循环变量i从O变化大到n-1,内层循环变量j从0到n-j,在内层循环体内,比较相邻两数,如果前面比后面的大则交换。在内层循环体内,如果前面的元素比后面的元素大,则用一个临时变量记录前面的第j个元素,然后将第j+1个元素赋值给第j个元素,临时变量值赋给第j+1个元素,如此完成两个元素的交换。
三、综合应用题
(1)应添加“staticfloatAllWeight;”。
(2)应添加“Weight=w;”。
(3)应添加“AllNo--;”。
(4)应添加“intTCFruit::AllNo=0;”。
【解析】静态数据成员声明时需使用关键字static,因此第1处应添加“staticfloatAllWeight;”。构造函数用来对类成员进行初始化,在TCFruit类的构造函数TCFruit(floatw)中,完成weight的初始化,并把这个w加到AllWeight中,并且AllNo自加,因此第2处应添加“weight=w;”。调用析构函数相当于退出,这时AllWeight中减去weight,然后AllNo自减,因此第3处应添加“AllNo--;”。静态数据成员的初始化格式为“<数据类型><类名>::(静态数据成员>=(初始值)”,因此第4处应添加“intTCFruit::AllNo=0;”。
微信搜索"考试吧"了解更多考试资讯、下载备考资料
相关推荐: