为什么输出为0,可以麻烦解答下吗?刚刚基接触c

#include
#include
main()
{
float s,answer,a,b,c;
scanf(" %d %d %d",&a,&b,&c);
s=(a+b+c)/2;
printf("s=%f",s);
answer=sqrt(s*(s-a)*(s-b)*(s-c));
printf("anwer=%f",answer);

}

abc是浮点数类型,用scanf读取时要写%f

scanf( "%d %d %d", &a, &b, &c );
//改为
scanf( "%f %f %f", &a, &b, &c );

需要修改2处
一个是
scanf( "%f %f %f", &a, &b, &c);
因为你是浮点数

另一个是
s=(a+b+c)/2.0f;
如果是2的话,那么是整除了。

对数据类型的掌握不够熟练。
首先,在定义的时候把a,b,c都定义为浮点型,所以在输入a,b,c时应该使用浮点型符号,也就是将
“scanf ("%d %d %d",&a,&b,&c);”改为“scanf ("%f %f %f",&a,&b,&c);”。
其次,在定义时s也是浮点型,当浮点型数据除以整型数据时,计算机会将整形数据自动转换为浮点型,之后进行浮点数的运算,所以表达式“s=(a+b+c)/2;”
是没有问题的。但是为了使代码更明了,可以改成“s=(a+b+c)/2.0;”。
希望对你有帮助,望采纳~

如果把a,b,c都定义为浮点型,所以在输入a,b,c时应该使用浮点型符号,也就是将“scanf ("%d %d %d",&a,&b,&c);”改为“scanf ("%f %f %f",&a,&b,&c);”。或者将a,b,c都定义为整型,即int,a,b,c;