如何在C++文件读取程序中计算整数的总和与平均值?
修改后的整数文件读取与统计程序
要实现读取文件中整数的总和与平均值计算,只需要在原读取程序中添加总和变量、计数变量,并在读取过程中累加数值、统计数量,最后计算平均值即可。以下是修改后的完整代码:
#include <iostream> #include <fstream> using namespace std; int main() { ifstream inputfile; int num; // 初始化总和为0,计数为0 long long sum = 0; // 用long long避免大数溢出 int count = 0; inputfile.open("savedata.dat"); // 检查文件是否成功打开 if (!inputfile.is_open()) { cout << "无法打开文件savedata.dat" << endl; return 1; } cout << "Contents of file: " << endl; while (inputfile >> num) // 读取直到文件结束 { cout << num << endl; sum += num; // 累加当前整数到总和 count++; // 统计整数个数 } // 计算并输出总和与平均值 if (count > 0) { // 避免除以0的情况 double average = static_cast<double>(sum) / count; // 强制转换为浮点类型计算平均值 cout << "\n统计结果:" << endl; cout << "整数总和:" << sum << endl; cout << "整数平均值:" << average << endl; } else { cout << "\n文件中没有整数数据" << endl; } inputfile.close(); return 0; }
关键修改点说明:
- 添加统计变量:声明
sum(存储总和)和count(统计整数个数),初始值都设为0。用long long类型的sum是为了避免当整数数量多、数值大时出现溢出问题。 - 读取时累加与计数:在
while循环的每次迭代中,把读取到的num加到sum里,同时让count自增1。 - 计算平均值:用
static_cast<double>(sum)把总和转换为浮点类型,这样除法结果会是浮点数,避免整数除法导致的精度丢失。 - 健壮性处理:添加了文件打开失败的判断,以及文件为空时的处理(避免除以0错误)。
内容的提问来源于stack exchange,提问作者user20456035
相关产品推荐
相关产品推荐

