C语言输入整数计算均值及占比的代码出错,求协助排查
代码错误排查与修正
你的代码存在以下几个关键问题:
- 变量计算顺序错误:
sum = a + b + c;写在scanf读取输入之前,此时a、b、c是未初始化的随机值,导致sum的计算完全错误,必须把sum的计算放在scanf之后。 - 整数除法丢失精度:
sum / 3是整数除法,两个整数相除会直接舍弃小数部分(比如7/3结果为2而非2.33),无法得到正确的浮点平均值,需要将其中一个操作数转为浮点类型来触发浮点运算。 - 比例计算的整数截断问题:
a / sum * 100同样是整数除法,若a小于sum,a/sum的结果会被截断为0,最终比例也会是0,需要先将操作数转为浮点类型再计算。
修正后的代码如下:
#include <stdio.h> int main(void) { int a, b, c, sum; double d, p; printf("请输入三个整数:"); scanf("%d %d %d", &a, &b, &c); sum = a + b + c; d = (double)sum / 3; // 转为浮点运算保留小数精度 printf("3个整数的平均值是:%.2f", d); p = (double)a / sum * 100; // 先转浮点再计算比例 printf(",第一个数占和的比例是:%.2f%%", p); return 0; }
补充说明:
- 新增
return 0;符合C语言标准的main函数规范。 - 输出时去掉了多余的
d=和p=,让结果显示更直观,若你需要保留变量名标识,可改回原格式。
内容的提问来源于stack exchange,提问作者Tesla
相关产品推荐
相关产品推荐

