3.编写程序,生成一个二进制数据文件,将n~m之间的所有素数写入文件data.dat中。从数据文件中读取二进制数据,并在显示器上以每行10个数的形式显示。c++
时间: 2024-02-13 11:01:04 浏览: 24
以下是C++代码实现:
```c++
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool is_prime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
void write_primes_to_file(int n, int m, const string &filename) {
ofstream ofs(filename, ios::binary);
if (!ofs) {
cerr << "Error: Cannot open file " << filename << endl;
exit(1);
}
for (int i = n; i <= m; i++) {
if (is_prime(i)) {
ofs.write(reinterpret_cast<const char*>(&i), sizeof(int));
}
}
ofs.close();
}
void read_primes_from_file(const string &filename) {
ifstream ifs(filename, ios::binary);
if (!ifs) {
cerr << "Error: Cannot open file " << filename << endl;
exit(1);
}
int num;
int count = 0;
while (ifs.read(reinterpret_cast<char*>(&num), sizeof(int))) {
cout << num << " ";
count++;
if (count % 10 == 0) {
cout << endl;
}
}
ifs.close();
}
int main() {
write_primes_to_file(3, 100, "data.dat");
read_primes_from_file("data.dat");
return 0;
}
```
首先定义了一个判断素数的函数`is_prime`,然后定义了一个函数`write_primes_to_file`,用于将n到m之间的素数写入二进制文件中。在函数中使用了`ofstream`类的`write`函数将整数转换为二进制数据并写入文件中。
接下来定义了一个函数`read_primes_from_file`,用于从二进制文件中读取数据并显示到屏幕上。在函数中使用了`ifstream`类的`read`函数将二进制数据转换为整数,并使用`count`变量控制输出格式。
最后在`main`函数中调用了上述两个函数,完成了程序的功能。