打扰一下,请帮我看看

#include<stdio.h>
#include<math.h>
int main(void)
{
float x,y,z,s,r;
scanf("%f,%f,%f",&x,&y,%z);
r=(x+y+z)/2;
s=sqrt(r*(r-x)(r-y)(r-z));
if((x<y+z)&&(y<x+z)&&(z<x+y))
printf("s=%f\n",s);
else
printf("所给数据不构成三角形!");
return 0;
}
报错:warning C4244: '=' : conversion from 'double' to 'float', possible loss of data

z前面应该是取地址符,你打错了

img


另外s=sqrt(r*(r-x)(r-y)(r-z));之间没写乘号
避免提醒可以都用double类型或者比较的时候用fabs(x+y-z)>0.001来比较

#include<stdio.h>
#include<math.h>
int main(void)
{
float x,y,z,s,r;
scanf("%f,%f,%f",&x,&y,&z);
r=(x+y+z)/2;
s=sqrt(r*(r-x)*(r-y)*(r-z));
if((x<y+z)&&(y<x+z)&&(z<x+y))
printf("s=%f\n",s);
else
printf("所给数据不构成三角形!");
return 0;
}

img

这只是警告,如果不放心就全改成double类型

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