问题及代码:
/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:test.cpp
*作 者:陈文青
*完成日期:2014年11月25日
*版 本 号:v1.0
*
*问题描述:从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后进行排序,
将排序后的结果保存到文件ordered_salary.txt中。(salary.txt在云学堂和QQ群下载。)。
*程序输入:
*程序输出:
*/
#include <fstream>
#include<iostream>
#include<cstdlib>
using namespace std;
int main( )
{
float a[500],t;
int i=0,j,n;
ifstream infile("salary.txt",ios::in); //以输入的方式打开文件
if(!infile) //测试是否成功打开
{
cerr<<"open error!"<<endl;
exit(1);
}
while(infile>>a[i]) i++; //从文件中读取数据
infile.close();
n=i; //n为职工人数
for(i=0; i<n; i++)
a[i]*=1.2; //涨工资了
//排序,用冒泡法,其他法类似
for(j=0; j<n-1; j++)
for(i=0; i<n-j-1; i++)
if (a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
//输出结果
ofstream outfile("ordered_salary.txt",ios::out);
if(!outfile) //测试文件打开操作是否成功,不成功则提示后退出。
{
cerr<<"open error!"<<endl;
exit(1);
}
for(i=0; i<n; i++)
{
outfile<<a[i]<<endl;
if(i%5==0&&i!=0) cout<<endl;
cout<<a[i]<<"\t";
}
outfile.close(); //关闭文件。用完了必须关闭,否则会丢失数据
return 0;
}
运行结果: