C++面试题:把文件中的一组整数排序后输出到另一个文件中。
考点:运用vector容器解决实际问题
出现频率:★★★★
解析:
这个题目牵涉到文件操作以及排序。我们可以使用vector容器来简化文件操作。在读文件的时候用push_back把所有的整数放入一个vector<int>对象中,在写文件时用[]操作符直接把vector<int>对象输出到文件。代码如下:
        #include<iostream>
        #include<fstream>
        #include <vector>
        using namespace std;
        
        //对data容器中的所有元素进行冒泡排序
        void Order(vector<int>& data)
        {
                int count = data.size();              //获得vector中的元素个数
                for (int i=0 ; i<count ; i++)
                {
                        for (int j=0; j<count-i-1; j++)
                        {
                                if (data[j] > data[j+1])      //如果当前元素比下一个元素大,则交换
                                {                        //结果为升序排列
                                        int temp = data[j] ;
                                        data[j] = data[j+1] ;
                                        data[j+1] = temp ;
                                }
                        }
                }
        }
        
        int main( void )
        {
                vector<int>data;
                ifstream in("c:\\data.txt");
                if (!in)                      //打开输出文件失败
                {
                        cout<< "infile error!" << endl;
                        return 1;
                }
                int temp;
                while (!in.eof())
                {
                        in >> temp;             //从文件中读取整数
                        data.push_back(temp);  //把读取的证书放入data容器中
                }
                in.close();
                Order(data);                //冒泡排序
                ofstream out("c:\\result.txt");
                if (!out)                     //打开输出文件失败
                {
                        cout<<"outfile error!" << endl;
                        return 1;
                }
                for (int i = 0 ; i < data.size() ; i++)
                        out << data[i] << " ";     //把data容器中的所有元素输出至文件
                out.close();
                return 0;
        }
程序中的Order函数使用冒泡排序把data容器中的所有元素进行了升序。下面说明主函数的各个步骤:
(1)代码26行,定义了一个空的vector<int>容器
(2)代码27~32行,定义了一个输入文件流,如果打开输入文件(data.txt)失败,则主函数返回。
(3)代码34~38行,把输入文件中(data.txt)的所有整数放入vector容器中。
(4)代码40行,调用Order函数对vector容器中的所有元素进行排序(升序)。
(5)代码41~46行,定义了一个输出文件流,如果打开输出文件(result.txt)失败,则主函数返回。
(6)代码47~48行,把data容器中的所有元素输出至result.txt中
 

更多C/C++面试题、C/C++视频、C/C++电子书,
请百度参考"爱学网izixue"