用c++编程,用记事本产生一个文本文件data.txt,其内容为若干实数,数据之间以空白字符分割。编程从该文件中读入这些实数,求出这些实数的平均值,在程序中创建并产生一个文本文件result.txt,内容为data.txt中的全体实数,每行5个数,最后一行是求出的平均值,并逐行解释代码
时间: 2024-02-25 14:52:40 浏览: 68
好的,以下是对应的 C++ 代码:
```c++
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
using namespace std;
int main() {
vector<double> data; // 创建一个向量存储数据
double num;
ifstream infile("data.txt"); // 打开文件
while (infile >> num) {
data.push_back(num); // 读取数据并存储到向量中
}
infile.close(); // 关闭文件
double sum = 0.0;
for (double d : data) {
sum += d; // 计算数据总和
}
double avg = sum / data.size(); // 计算平均值
ofstream outfile("result.txt"); // 创建文件
int count = 0;
for (double d : data) {
outfile << fixed << setprecision(2) << d << " "; // 输出每个数据,并保留两位小数
count++;
if (count % 5 == 0) {
outfile << endl; // 每行输出5个数据
}
}
outfile << fixed << setprecision(2) << avg; // 输出平均值,并保留两位小数
outfile.close(); // 关闭文件
return 0;
}
```
这段代码首先创建了一个向量 `data` ,用于存储从 `data.txt` 文件中读取的实数。然后,使用 `ifstream` 类型的 `infile` 对象打开 `data.txt` 文件,并逐个读取其中的实数,并将其存储到 `data` 向量中。读取完毕后,关闭 `data.txt` 文件。
接着,代码计算 `data` 向量中所有实数的总和和平均值。然后,使用 `ofstream` 类型的 `outfile` 对象创建 `result.txt` 文件,并逐个输出 `data` 向量中的实数,每行输出5个实数。同时,每个实数都保留两位小数。最后,输出平均值,并将 `outfile` 关闭。
需要注意的是,代码中使用了 `fstream` 库中的 `ifstream` 和 `ofstream` 类型,分别用于读取和写入文件。同时,为了保证输出的格式,使用了 `iomanip` 库中的 `fixed` 和 `setprecision` 函数,分别用于设置小数点后位数和输出格式。
阅读全文