请打开考生文件夹下的解决方案文件proj2,此工程包含一个源程序文件proj2.cpp。其中定义了Score类。
Score是一个用于管理考试成绩的类。其中,数据成员_s指向存储成绩的数组,_n表示成绩的个数;成员函数Sort使用冒泡排序法将全部成绩按升序进行排列。
请在程序中的横线处填写适当的代码,然后删除横线,以实现Score类的成员函数Sort。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
1 //proj2.cpp
2 #include<iosttream>
3 #include<cstdlib>
4 #include<ctime>
5 using namespace std;
6 class Score {
7 public:
8 Score(double * s, int n) : s(s), n(n) {}
9 double GetScore(int i)const
10 {return s[i];}
11 void Sort();
12 private:
13 double*s;
14 int;n ;
15 };
16 void Score::Sort()
17 {
18 //********found********
19 for(int i=0 ; i<_n-1;____________)
20 //********found********
21 for(int j=___________;j>i;j--)
22 if ( s[j] < s[j-1] )
23 { //交换 s[j]和 s[j-1]
24 double t=s[j];
25 //********found********
26 __________;
27 //********found********
28 ____________;
29 }
30 }
31
32 int main()
33 {
34 const int NUH=10;
35 double s[NUM];
36 srand(time(0));
37 for(int i=0 ; i<NUN; i++)
38 s[i]=double(rand())/RAND_MAX * 100 ;
39 score ss(s,NUM);
40 ss.Sort();
41 for(int j=0;j<NUM;j++)
42 cout<<ss.GetScore(j) << endl;
43 return 0;
44 }
【正确答案】(1)i++
(2)_n—1
(3)_s[j]=_s[j一1]
(4)_s[j一1]=t
【答案解析】(1)主要考查for循环语句,从题目要求可知循环变量i要从0到_n一2,因此i要递增操作,即i++。
(2)主要考查考生对冒泡排序的掌握,这里要求从后往前扫描,比较相邻两个元素,若后者小则交换,因此在这里下标j要从最后开始,即int j=_n—。
(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]即可。