问题 问答题

请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2,此工程包含一个源程序文件proj2.cpp。其中定义了Score类。
Score是一个用于管理考试成绩的类。其中,数据成员_s指向存储成绩的数组,_n表示成绩的个数;成员函数Sort使用冒泡排序法将全部成绩按升序进行排列。
请在程序中的横线处填写适当的代码,然后删除横线,以实现Score类的成员函数Sort。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
//proj2.cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class Score
public:
Score(double * s, int n):_s(s),_n(n)
double GetScore (int i) const return_s[i];
void Sort ();
private:
double*_s;
int_n;
;
void Score::Sort()

for(int i=0;i<n-1;______)
//********found********
for(int j=______;j>i;j--)
if(_s[j]<_s[j-1])
//交换_s[j]和_s[j-1]double t=_s[j];
//********found********
______;
//********found********
______;


int main ()

const int NUM=10;
double s[NUM];
srand(time (0));
for(int i=0;i<NUM;i++)
s[i]=double(rand ())/RAND MAX*100;
Score ss(s, NUM);
ss.Sort();
for(int j=0;j<NUM;j++)
cout<<ss.GetScore(j)<<endl;
return 0;

答案

参考答案:(1)i++
(2)_n-1
(3)_s[j]=_s[j-1]
(4)_s[j-1]=t

解析: 本题考查Score类,其中涉及构造函数、成员函数和排序算法。
(1)主要考查for循环语句,从题目要求可知循环变量i要从0到_n-2,因此i要递增操作,即i++。
(2)主要考查考生对冒泡排序的掌握,这里要求从后往前扫描,比较相邻两个元素,若后者小则交换,因此在这里下标j要从最后开始,即int j=_n-1。
(3)考查交换算法,在if语句中_s[j]<_s[j-1]满足条件,则实现交换。因为已经把_s[j]的值赋给了中间变量t,所以这里要把_s[j-1]的值赋给_s[j],即_s[j]=_s[j-1];。
(4)考查交换算法,这里只需把中间变量t中的值赋给_s[j-1]即可。
本题考查的是考生对冒泡排序算法的掌握,要记住冒泡排序的思想是两两比较待排序序列中的元素,并交换不满足顺序要求的各对元素,直到全部满足顺序要求为止。

单项选择题
问答题 论述题