建立两个磁盘文件f1.dat和f2.dat,编写程序实现以下工作:
(1)从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);
(2)从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面。
(3)从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat中(不保留原来的数据)。
#include<iostream>
#include<fstream>
using namespace std;
void fun1()
{
int a[10];
ofstream outfile1("f1.dat"),outfile2("f2.dat");
if(!outfile1)
{
cerr<<"open f1.dat error!"<<endl;
exit(1);
}
if(!outfile2)
{
cerr<<"open f2.dat error!"<<endl;
exit(1);
}
cout<<"enter 10 enteger numbers:"<<endl;
for(int i=0;i<10;i++)
{
cin>>a[i];
outfile1<<a[i]<<" ";
}
cout<<"enter 10 integer numbers:"<<endl;
for(int i=0;i<10;i++)
{
cin>>a[i];
outfile2<<a[i]<<" ";
}
outfile1.close();
outfile2.close();
}
void fun2()
{
ifstream infile("f1.dat");
if(!infile)
{
cerr<<"open f1.dat error!"<<endl;
exit(1);
}
ofstream outfile("f2.dat",ios::app);
if(!outfile)
{
cerr<<"open f2.dat error!"<<endl;
exit(1);
}
int a;
for(int i=0;i<10;i++)
{
infile>>a;
outfile<<a<<" ";
}
infile.close();
outfile.close();
}
void fun3()
{
ifstream infile("f2.dat");
if(!infile)
{
cerr<<"open f2.dat error!"<<endl;
exit(1);
}
int a[20];
int i,j,t;
for(i=0;i<20;i++)
{
infile>>a[i];
}
for(i=0;i<19;i++)
{
for(j=0;j<19-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
infile.close();
ofstream outfile("f2.dat",ios::out);//或ofstream outfile("f2.dat");
if(!outfile)
{
cerr<<"open f2.dat error!"<<endl;
exit(1);
}
cout<<"data in f2.dat:"<<endl;
for(i=0;i<20;i++)
{
outfile<<a[i]<<" ";
cout<<a[i]<<" ";
}
cout<<endl;
outfile.close();
}
int main()
{
fun1();
fun2();
fun3();
return 0;
}