You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub自动评分未通过的C++百分比计算程序问题排查

问题定位与修复方案

核心问题分析

你的代码无法通过自动评分的主要原因如下:

  1. 错误信息输出流不匹配:你使用std::cerr输出错误提示,但绝大多数GitHub自动评分系统仅捕获std::cout的输出内容,导致测试框架无法检测到错误提示,判定流程不符合要求。
  2. 冗余头文件:引入了未使用的<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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:15:02