C语言程序挑刺,在线等

来源:百度知道 编辑:UC知道 时间:2024/06/28 08:51:22
#include <math.h>
main()
{int a,b,c;
float p;
p=(float)(a+b+c)/2);
printf("please enter three numbers:");
scanf("%d%d%d",&a,&b,&c);
printf("area=%f",sqrt((double)p*(p-a)*(p-b)*(p-c));
}
运行结果要么数字不对,要么结果为sqrt: DOMAIN error
area=+NAN

你问第二次了?除2的地方改成2.0。

程序格式的错我就不指出了,我只说你算法的。
p=(float)(a+b+c)/2);
printf("please enter three numbers:");
scanf("%d%d%d",&a,&b,&c);
应改为:
printf("please enter three numbers:");
scanf("%d%d%d",&a,&b,&c);
p=(float)(a+b+c)/2);
原来你p=(float)(a+b+c)/2); 在a,b,c的值没有肯定之前,所以得到的P值是一个系统默认的值,具体是什么也不清楚了。所以所以会输出那个数值很大。你要记得C程序执行各行是从下向下执行的。

恩,楼上是对的,/运算如果是两个整数则结果就是整数,如:5/2=2,10/3=3
如果其中至少有一个为浮点数,则结果为浮点数:5/2.0=2.5,10.0/3.0=3.333333

p=(float)(a+b+c)/2); 少个括号 2 应该为2.0