这是哪里错了呀?输出结果始终不正确

img


这是哪里错了呀?输入数据的输出结果始终不正确,运行没有报错,找了半天没有找到是哪里出了问题

s 在 a b c 赋值之前就计算了,始终为 0
0 × 任何数都是 0

需要把 s 的赋值 放在 scanf 之后,为了防止出错,可以在赋值之后 把四个变量都打印一下 看看

代码是顺序执行的!也就是说,虽然你在第 7 行计算了 s,但是此时 abc 都还没有从键盘赋值,此时s的值是0 。scanf 读取 abc 的值后,不会自动更新 s 的值( 因为计算 s 的语句在给 abc 赋值语句的上面,给 abc 赋值后不会再计算 s,s 的值不会改变),所以得到的结果就是错误的。
修改方法是:
把 s=(a+b+c)/2 这一句放在 scanf 这一行的后面

#include <stdio.h>
#include <math.h>
int main() {
    double a, b, c, s, area;
    a = 0.0, b = 0.0, c = 0.0;
    printf("please input a,b,c:\n");
    scanf_s("%d,%d,%d", &a, &b, &c);
    s = (a + b + c) / 2;
    area = sqrt(s * (s - a) * (s - b) * (s - c));
    printf("area=%f\n", area);
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632