操作题 1.  请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。sort成员函数的功能是将当前数据表中的元素升序排列。请编写这个sort函数。程序的正确输出应为:
    排序前:7,1,3,11,6,9,12,10,8,4,5,2
    排序后:1,2,3,4,5,6,7,8,9,10,11,12
    要求:
    补充编制的内容写在“//********333********”与“//********666********”两行之间。不得修改程序的其他部分。
    注意:程序最后将结果输出到文件out. dat中。输出函数writeToFile已经编译为obj文件,并且在本程序调用。
    //DataList.h
    #include<iostream>
    using namespace std;
    class Datalist{//数据表类
    int len;
    double*d;
    public:
    DataList(int len,double data[]=NULL);
    ~DataList(){delete[]d;}
    int length()const{ return len;}
    //数据表长度(即数据元素的个数)
    double getElement(int i)const{return d[i];}
    void sort();//数据表排序
    void show () const;  //显示数据表
    };
    void writeToFile (char*, constDataList&);
    //main.cpp
    #include "DataList.h"
    DataList::DataList(int len,double data[]):len(len){
    d=new double[len];
    for{int i=0;i<len;i++)
    d[i]=(data==NULL?0.0:data[i]);
    }
    void DataList::sort(){//数据表排序
    //********333********
    //********666********
    }
    void Datalist::show()const{
    //显示数据表
    for(int i=0;i<len-1;i++)cout<<d[i]<<",";
    cout<<d[len-1]<<endl;
    }
    int main () {
    double s[]={7,1,3,11,6,9,12,10,8,4,5,2};
    DataList list(12,s);
    cout<<"排序前:";
    list.show();
    list.sort();
    cout<<endl<<"排序后:";
    list.show();
    writeToFile(" ",list);
    return 0;
    }
【正确答案】for(inti=0;i<len;++i)
   //从头遍历数组d
   for(int j=i;j<len;++j)
   //从i+l处遍历数组d
   if(d[i]>d[j])
   //d[i]和d[j]比较人,如果大于,就d[i]和d[j]值交换
   {
   int temp=d[i];
   //把临时整型变量temp赋值为d[i]
   d[i]=d[j];
   //把d[j]赋值给d[i]
   d[j]=temp;
   //把temp值赋给d[j]
   }
【答案解析】 主要考查的是DataList类,其中涉及动态数组、构造函数、析构函数、const函数和排序算法。Sort函数是一个排序函数,对于排序可以使用的方法很多,考生只需要使用自己最擅长的方法即可,题目并没有指定考生使用哪种方法。
   本题使用最简单的冒泡排序算法,首先明确要排序的动态数组d,其长度为len,在此可以使用两个下标i和j相比较,当d[i]>d[j]时,数组内的值利用中间变量temp进行交换。