C++计算温度平均值时输入仅为-999出现-nan错误的解决方法
解决温度平均值计算中仅输入终止符时的NaN问题
问题根源
当仅输入-999时,程序未收集到任何有效温度值,此时有效温度的计数为0,执行总和/计数就会触发0/0的非法运算,最终输出NaN(非数字)。
修复思路
在计算平均值前,先判断有效温度的计数是否为0:
- 若计数为0,直接输出
0.000 - 若计数大于0,再正常计算并输出平均值
修改后的示例代码
以下是修复后的完整代码,适配你的需求逻辑:
#include <iostream> #include <iomanip> using namespace std; int main() { double temp, total = 0.0; int validCount = 0; cout << "输入温度(输入-999结束):\n"; while (cin >> temp) { if (temp == -999) break; // 仅统计-30到150之间的有效温度 if (temp >= -30 && temp <= 150) { total += temp; validCount++; } } cout << fixed << setprecision(3); if (validCount == 0) { cout << "平均值:0.000\n"; } else { double average = total / validCount; cout << "平均值:" << average << "\n"; } return 0; }
核心修改点
- 新增
validCount == 0的判断分支,直接处理无有效输入的场景 - 避免了除数为0的非法运算,确保输出符合预期的
0.000
内容的提问来源于stack exchange,提问作者Delaney Logan
相关产品推荐
相关产品推荐

