C语言 我是白丁,我到底错哪里了???

来源:百度知道 编辑:UC知道 时间:2024/06/19 12:45:52
#include<stdio.h>
void main()
{
float a,b,c,s,area;
printf("请输入三角形的三边: \n");
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2;

area=sqar(s*(s-a)*(s-b)*(s-c));

printf("三角形的面积是:%f",area);
}

每次调试的时候就说我的 s=(a+b+c)/2;这句有错,float 和int 型的数值转化要possible loss data...
我不大明白有什么loss 的??
谢谢··

加上头文件“math.h”
“scanf("%f,%f,%f",&a,&b,&c);” 改为“scanf("%f%f%f",&a,&b,&c); ”

“area=sqar(s*(s-a)*(s-b)*(s-c));”改为“area=sqrt(s*(s-a)*(s-b)*(s-c)); ”

这样改了就可以了,你可以试试。。。

#include<stdio.h>
#include<math.h>

void main()
{
float a,b,c,s,area;
printf("请输入三角形的三边: \n");
scanf("%f,%f,%f",&a,&b,&c); //既然你这样写,那么,你输入的时候就需要用逗号隔开了
s=(a+b+c)/2;//楼上的乱说,这里2会自动转为float类型的,loss 精度的问题,在于你把double类型的计算结果,赋值给float类型的s了,我觉得没有多大关系的,如果你在意,可以把s定义成double类型的

area=sqrt(s*(s-a)*(s-b)*(s-c)); //////那句没有错,而是这句错了,sqrt才是求根函数,需要包含math.h

printf("三角形的面积是:%f",area);
}

没什么用,只是编译器的一个误报.
这样写就好了.
s=(float)((a+b+c)/2);

scanf("%f,%f,%f",&a,&b,&c);这里错了~~初学就是容易犯错

langtul说的对
loss data是warning不是error~ 呵呵
只是说有可能丢失数据
是因为s=(a+b+c)/2;
s,a,b,c都是float型的~
而2是整型 应写成s=(a+b+c)/2.0;

四楼的正解,其它瞎说
如果表达式中有一个