GitHub自动评分未通过的C++百分比计算程序问题排查
问题定位与修复方案
核心问题分析
你的代码无法通过自动评分的主要原因如下:
- 错误信息输出流不匹配:你使用
std::cerr输出错误提示,但绝大多数GitHub自动评分系统仅捕获std::cout的输出内容,导致测试框架无法检测到错误提示,判定流程不符合要求。 - 冗余头文件:引入了未使用的
<cmath>头文件,部分严格的评分系统可能会因此扣分。
针对测试3的场景(两次输入后输出100.00%),当第一次输入num1 > num2触发错误后,第二次输入num1 == num2时你的计算逻辑是正确的,但错误流的问题会导致测试无法识别错误步骤,进而判定失败。
修复后的代码
#include <iostream> #include <iomanip> int main(){ double num1, num2; while(true){ std::cout << "Entre com o primeiro valor: "; std::cin >> num1; std::cout << "Entre com o segundo valor: "; std::cin >> num2; if(num1 > num2){ std::cout << "Erro! Entre com um primeiro valor menor ou igual ao segundo." << std::endl; continue; } double p = (num1 / num2) * 100.0; std::cout << std::fixed << std::setprecision(2) << p << "%" << std::endl; break; } return 0; }
额外优化建议
- 添加输入有效性检查:若用户输入非数字字符,
std::cin会进入错误状态导致后续输入失败,可补充以下逻辑(需引入<limits>头文件):if (!(std::cin >> num1)) { std::cout << "Entrada inválida! Por favor, insira um número." << std::endl; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); continue; } - 严格匹配输出格式:确认测试要求的百分比符号前是否需要空格,若要求
100.00 %则需在代码中添加空格。
内容的提问来源于stack exchange,提问作者Jefferson Tafarel
相关产品推荐
相关产品推荐

