c++语言编写 建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作: 1) 从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数); 2) 从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面; 3) 从f2.dat中读入20个整数,对它们按从小到大的顺序存放到f2.dat中,不保留原来的数据。
时间: 2024-03-05 22:51:25 浏览: 182
好的,以下是一个示例程序,可以实现你的要求:
```c++
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
const int SIZE = 10;
int main() {
int num, i, j;
int arr1[SIZE], arr2[SIZE * 2];
// 从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数)
ofstream f1("f1.dat", ios::binary);
ofstream f2("f2.dat", ios::binary);
cout << "请输入20个整数:\n";
for (i = 0; i < SIZE * 2; i++) {
cin >> num;
if (i < SIZE) {
f1.write((char *)&num, sizeof(int));
}
f2.write((char *)&num, sizeof(int));
}
f1.close();
f2.close();
// 从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面
ifstream f1_in("f1.dat", ios::binary);
ofstream f2_out("f2.dat", ios::binary | ios::app);
cout << "f1.dat文件中的前10个数已经存放到f2.dat文件中,请打开f2.dat文件查看!\n";
for (i = 0; i < SIZE; i++) {
f1_in.read((char *)&num, sizeof(int));
f2_out.write((char *)&num, sizeof(int));
}
f1_in.close();
f2_out.close();
// 从f2.dat中读入20个整数,对它们按从小到大的顺序存放到f2.dat中,不保留原来的数据
fstream f2_io("f2.dat", ios::binary | ios::in | ios::out);
cout << "f2.dat文件中的20个数按照从小到大的顺序存放成功,请打开f2.dat文件查看!\n";
for (i = 0; i < SIZE * 2; i++) {
f2_io.read((char *)&arr2[i], sizeof(int));
}
sort(arr2, arr2 + SIZE * 2);
f2_io.seekp(0, ios::beg);
for (i = 0; i < SIZE * 2; i++) {
f2_io.write((char *)&arr2[i], sizeof(int));
}
f2_io.close();
return 0;
}
```
这个程序的大致思路与前面的C语言程序类似:先创建两个文件f1.dat和f2.dat,从键盘输入20个整数,分别存放在两个磁盘文件中。然后从f1.dat读入前10个数,存放到f2.dat文件原有数据的后面。最后从f2.dat中读入20个整数,对它们按从小到大的顺序存放到f2.dat中,不保留原来的数据。
不同的是,C++中用文件流的方式进行文件的读写,而且在对文件进行读写时,要指定相应的文件打开模式。此外,C++中提供了STL库,包含了很多常用的算法,如排序算法sort()。在这个程序中,我们使用了sort()函数对读入的整数数组进行排序。
阅读全文