3.编写程序,生成一个二进制数据文件,将n~m之间的所有素数写入文件data.dat中。从数据文件中读取二进制数据,并在显示器上以每行10个数的形式显示。用c加加编写程序
时间: 2024-02-11 16:07:39 浏览: 87
素数、二维数组键入、奇数存入二进制、读取文件数据
5星 · 资源好评率100%
以下是C++的实现代码:
```c++
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
void generatePrimeFile(int n, int m, const string& filename) {
ofstream outfile(filename, ios::binary);
if (!outfile) {
cout << "Failed to create file " << filename << endl;
return;
}
for (int i = n; i <= m; i++) {
if (isPrime(i)) {
outfile.write((char*)&i, sizeof(int));
}
}
outfile.close();
}
void displayPrimeFile(const string& filename) {
ifstream infile(filename, ios::binary);
if (!infile) {
cout << "Failed to open file " << filename << endl;
return;
}
vector<int> primes;
int p;
while (infile.read((char*)&p, sizeof(int))) {
primes.push_back(p);
}
infile.close();
for (int i = 0; i < primes.size(); i++) {
cout << primes[i] << ' ';
if ((i + 1) % 10 == 0) cout << endl;
}
}
int main() {
const string filename = "data.dat";
generatePrimeFile(3, 100, filename);
displayPrimeFile(filename);
return 0;
}
```
在生成素数文件时,使用`ofstream`对象以二进制写入的方式打开文件,并使用`outfile.write`函数将每个素数以四个字节的形式写入文件。在读取素数文件时,使用`ifstream`对象以二进制读取的方式打开文件,并使用`infile.read`函数读取四个字节的数据,并将其转换为整数。最后,按照每行10个数的形式输出素数。
阅读全文