15-1 工资数据的输入(从一个文件中读出读入另一个文件中)
/* * 作 者: 霍雨佳 * 完成日期:2014 年6月3日 * 版 本 号:v1.0 * 问题描述:工资数据的输入 * 样例输入: * 样例输出: * 问题分析: * (1)输入若干职工的工资(1000-10000的数字),将这些数字按降序排序后输出。请在下面程序基础上开展工作。 * (2)在软件开发过程中,为了调试程序,常常需要多次运行程序。多次运行的输入常相同,不免感到麻烦,尤其当数据量还偏多之时。人在做着毫无技术含量的事情! * 可以用的简便方法是,用输入重定向避免这种重复:请自建一个文件a.txt,包含上面输入样例中的数据,在(1)的程序中,while之前加句freopen("a.txt","r",stdin);,return 0; * 之前加一句fclose(stdin);,然后运行程序……。 * (3)在实际的应用中,数据并不是从键盘输入。输入重定向的方式也并非“正当”的渠道。工程中的做法是将数据放入专门的文件等待处理。 下载文件salary.txt,其中有不超过500名职工的工资。编程序读入这些职工的工资,将按降序排序后显示并保存到文件ordered_salary.txt中。 */ #include <iostream> #include<cstdio> //支持freopen的头文件 #include<cstdlib> #include<fstream> using namespace std; int main( ) { double salarys[500],t; int n=0; freopen("a.txt","r",stdin); //以输入的方式打开文件 r=read freopen("b.txt","w",stdout); //输出结果 w=write while(cin>>salarys[n]) { n++; //从cin流读取数据 } //将n名职工的工资排序后输出 for(int i=0;i<n+1;i++) { for(int j=0;j<n-i;j++) { if(salarys[j]<salarys[j+1]) { t=salarys[j]; salarys[j]=salarys[j+1]; salarys[j+1]=t; } } } for(int y=0; y<n; y++) { cout<<salarys[y]<<endl; } fclose(stdin); fclose(stdout);//关闭文件。用完了必须关闭, return 0; }运行结果:
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。