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

C++编写成绩百分比计算程序输出结果错误,求指导排查问题

问题根因

错误是C++的整数除法特性导致的:

  • 你代码中maths、science、english均为int类型,三者求和结果还是int类型,除数300默认也是int类型
  • C++中两个int执行除法运算时会走整数除法逻辑,直接舍弃小数部分,仅保留整数位。比如三门总分为270时,270/300的整数运算结果是0,赋值给double类型的percent后也只会得到0.0,和预期的0.9完全不符。

修复方案

只需要调整除法运算逻辑,触发浮点除法即可,有两种常用修改方式:

  1. 将求和结果强转为浮点类型再做除法
percent = (double)(maths + science + english) / 300;
  1. 把除数改为浮点字面量,隐式触发浮点除法
percent = (maths + science + english) / 300.0;

如果需要直接输出常规百分比格式(比如90%而非0.9),可以调整计算逻辑并补充百分号输出:

percent = (double)(maths + science + english) * 100 / 300;
std::cout<< "your percentage is :" << percent << "%\n";

修正后完整代码

#include <iostream>
    
int main(){ 
  int maths,science,english;
    
  std::cout<<"please enter your marks : \n";
    
  std::cin>>maths;  
  std::cin>>science;  
  std::cin>>english;
       
  double percent;
  percent= (maths + science + english) / 300.0;
        
  std::cout<< "your percentage is :" << percent << "\n";
  return 0;
}

内容的提问来源于stack exchange,提问作者Hussein Memon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:57:00