应用题   请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程proj3,其中定义的IntArray是一个用于表示整型一维数组的类。成员函数swap可以将数组中的两个指定元素交换位置;成员函数sort的功能是将数组元素按照升序排序。请编写成员函数sort。在main函数中给出了一组测试数据,此时程序运行中应显示:
    读取输入文件…
    ---排序前---
    a1=3 1 2
    a2=5 2 7 4 1 6 3
    ---排序后---
    a1=1 2 3
    a2=1 2 3 4 5 6 7
    要求:
    补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
    注意:程序最后将结果输出到文件out.dat中。输出函数WriteToFile已经编译为obj文件,并且在本程序中调用。
    //IntArray.h
    #include <iostream>
    #include <string.h>
    using namespace std;
   
    class IntArray {
    public:
    IntArray(unsigned int n)
    {
    size = n;
    data = new int[size];
    }
   
    ~IntArray() { delete [] data; }
   
    int getSize() const { return size; }
    int& operator [] (unsigned int i) const { return data[i]; }
    void swap(int i, int j)
    {
    int temp = data[i];
    data[i] = data[j];
    data[j] = temp;
    }
    void sort();
   
    friend ostream& operator << (ostream &os, const IntArray &array)
    {
    for (int i=0; i<array.getSize (); i++)
    os << array[i] << '';
    return os;
    }
    private:
    int * data;
    unsigned int size;
    };
    void readFromFile ( const char *, IntArray&);
   
    void writeToFile (char*, const IntArray &);
   
    //main.h
    #include <fstream>
    #include 'IntArray. h'
    void IntArray::sort ()
    {
    //******** 333********
   
   
    //******** 666********
    }
    void readFromFile (const char *  f, IntArray& m)
    {
    ifstream infile (f);
    if (infile.fail ()) {
    cerr << '打开输入文件失败!';
    return;
    }
    int i=0;
    while (!infile.eof()) {
    infile >> m[i++];
    }
    }
    int main ()
    {
    IntArray a1(3), a2(7), a3(1000);
    a1[0]=3, a1[1]=1, a1[2]=2;
    a2[0]=5, a2[1]=2, a2[2]=7, a2[3]=4, a2[4]=1, a2[5]=6, a2[6]=3;
    readFromFile ('in.dat', a3);
    cout << '---排序前---\n';
    cout <<'a1=' << a1 <<endl;
    cout <<'a2=' << a2 <<endl<<endl;
    a1.sort ();
    a2.sort();
    a3.sort();
    cout <<'---排序后--- \n';
    cout <<'a1=' <<a1<<endl;
    cout <<'a2=' <<a2<<endl<<endl;
    writeToFile('', a3);
    return 0;
    }
 
【正确答案】for(int i=0; i<size; i++) //i从0到size-1遍历 for(int j=i+1; j<size; j++) //j从(i+1)到(size-1)遍历 if(data[i]>data[j]) //如果data[i]>data[j] swap(i, j); //i与j交换位子
【答案解析】[考点] 本题考查的是IntArray类,其中涉及动态数组、构造函数、析构函数和成员函数。 主要考查考生对排序算法的掌握,sort函数的功能是将数组元素按照从小到大的顺序排序。使用for循环遍历数组元素,变量i和j代表数组元素下标,将数组元素i和j进行比较,顺序不对就调用swap函数交换元素。