编写一段程序,从键盘任意输入10个浮点数并存入二进制文件binary.dat中,从此二进制文件中读取数据并计算其总和与平均值。
时间: 2024-12-27 22:32:07 浏览: 81
要实现这个功能,你需要使用C++的`fstream`库来处理文件操作,包括写入和读取二进制数据。这里有一个简单的步骤指南:
**步骤1**: 创建一个名为`binary.dat`的二进制文件(如果不存在)。
**步骤2**: 用户从键盘输入10个浮点数并将它们写入到二进制文件中。
```cpp
#include <iostream>
#include <fstream>
int main() {
float numbers[10];
int i = 0;
std::cout << "Enter 10 floating-point numbers:\n";
while (i < 10) {
std::cin >> numbers[i];
++i;
}
// 打开二进制文件(若不存在则创建)
std::ofstream outfile("binary.dat", std::ios::binary);
if (!outfile.is_open()) {
std::cerr << "Error opening file for writing.\n";
return 1;
}
// 将数组写入文件
outfile.write(reinterpret_cast<char*>(numbers), sizeof(numbers));
outfile.close();
return 0;
}
```
**步骤3**: 关闭文件后,从`binary.dat`文件中读取数据,并计算总和与平均值。
```cpp
#include <iostream>
#include <fstream>
#include <vector>
// 用于读取浮点数的辅助函数
std::vector<float> read_floats_from_file(const std::string& filename) {
std::ifstream infile(filename, std::ios::binary);
if (!infile.is_open()) {
std::cerr << "Error opening file for reading.\n";
return {};
}
std::vector<float> result(10);
infile.read(reinterpret_cast<char*>(result.data()), sizeof(result));
infile.close();
return result;
}
int main() {
// 读取数据
const std::vector<float>& numbers = read_floats_from_file("binary.dat");
// 计算总和与平均值
double sum = 0;
for (float num : numbers) {
sum += num;
}
double average = sum / numbers.size();
std::cout << "Sum of the numbers: " << sum << "\n";
std::cout << "Average of the numbers: " << average << "\n";
return 0;
}
```
运行这段代码时,请确保在执行第二次`main()`函数之前已经保存了第一个`main()`函数中的数据,因为读取的文件将会覆盖原有的内容。
如果你有任何关于这些概念的问题,或者遇到了编译/运行时错误,请随时告诉我。
阅读全文