C++编写成绩百分比计算程序输出结果错误,求指导排查问题
问题根因
错误是C++的整数除法特性导致的:
- 你代码中
maths、science、english均为int类型,三者求和结果还是int类型,除数300默认也是int类型 - C++中两个
int执行除法运算时会走整数除法逻辑,直接舍弃小数部分,仅保留整数位。比如三门总分为270时,270/300的整数运算结果是0,赋值给double类型的percent后也只会得到0.0,和预期的0.9完全不符。
修复方案
只需要调整除法运算逻辑,触发浮点除法即可,有两种常用修改方式:
- 将求和结果强转为浮点类型再做除法
percent = (double)(maths + science + english) / 300;
- 把除数改为浮点字面量,隐式触发浮点除法
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
相关产品推荐
相关产品推荐

