问答题 请使用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() { //********found******** 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
【答案解析】解析:(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]即可。