如何编写C++程序实现整数序列输入与统计分析功能?
C++ 程序实现:统计输入整数序列的统计信息(输入0终止)
核心实现思路
- 持续读取用户输入的整数,当输入为
0时终止输入流程 - 全程维护以下统计变量:
- 整数个数(排除终止符0)
- 所有整数的总和
- 序列中的最大值
- 序列中的最小值
- 输入终止后,计算平均值(注意浮点精度)和最大最小值的差值,最后输出所有统计结果
完整代码实现
#include <iostream> #include <climits> // 用于INT_MAX和INT_MIN using namespace std; int main() { int num; int count = 0; int sum = 0; int max_val = INT_MIN; // 初始化为int类型的最小值 int min_val = INT_MAX; // 初始化为int类型的最大值 cout << "请逐个输入整数,输入0结束:" << endl; while (true) { cin >> num; // 输入0时终止循环 if (num == 0) { break; } // 更新统计变量 count++; sum += num; if (num > max_val) { max_val = num; } if (num < min_val) { min_val = num; } } // 处理没有有效输入的情况(直接输入0) if (count == 0) { cout << "未输入任何有效整数。" << endl; return 0; } // 计算平均值(转换为double保证精度) double average = static_cast<double>(sum) / count; int diff = max_val - min_val; // 输出统计结果 cout << "=== 统计结果 ===" << endl; cout << "序列中的整数个数:" << count << endl; cout << "整数的平均值:" << average << endl; cout << "序列中的最大整数:" << max_val << endl; cout << "序列中的最小整数:" << min_val << endl; cout << "最大与最小整数的差值:" << diff << endl; return 0; }
代码关键部分说明
- 变量初始化:
max_val初始化为INT_MIN(<climits>头文件提供),确保第一个有效输入必然能更新最大值min_val初始化为INT_MAX,同理确保第一个有效输入能更新最小值
- 循环逻辑:
- 使用
while(true)构建无限循环,输入0时通过break终止 - 每次输入非0整数时,同步更新计数、总和、最大/最小值
- 使用
- 边界处理:
- 判断
count是否为0,避免用户直接输入0导致的除以0错误和无效统计结果
- 判断
- 精度处理:
- 计算平均值时将
sum转换为double类型,避免整数除法导致的精度丢失
- 计算平均值时将
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

