3. 编写程序,生成一个二进制数据文件,将n~m之间的所有素数写入文件data.dat中。从数据文件中读取二进制数据,并在显示器上以每行10个数的形式显示。c++
时间: 2024-02-15 11:02:14 浏览: 104
以下是C++代码实现:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool is_prime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main() {
int n, m;
cout << "请输入n: ";
cin >> n;
cout << "请输入m: ";
cin >> m;
vector<int> primes;
for (int i = n; i <= m; i++) {
if (is_prime(i)) {
primes.push_back(i);
}
}
ofstream out("data.dat", ios::out | ios::binary);
for (int i = 0; i < primes.size(); i++) {
out.write((char*) &primes[i], sizeof(int));
}
out.close();
cout << "素数列表已写入data.dat文件" << endl;
ifstream in("data.dat", ios::in | ios::binary);
int num;
int count = 0;
while (in.read((char*) &num, sizeof(int))) {
cout << num << '\t';
count++;
if (count % 10 == 0) {
cout << endl;
}
}
in.close();
cout << "素数列表已在屏幕上显示" << endl;
return 0;
}
```
这里使用了`vector`来保存素数列表,并使用`ofstream`和`ifstream`来进行二进制数据的写入和读取操作。在写入数据时,需要将整数转换为`char*`类型;在读取数据时,也需要将`char*`类型转换为整数。
阅读全文