帮我看看这段C语言那里错了

#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c;
float s,p;
scanf("%d,%d,%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
p=(a+b+c)/2
s=sqrt(p*(p-a)*(p-b)*(p-c))
printf("%f",s);
else printf("no\n");
return 0;
}

错误的地方比较多,不过熟能生巧的:
1、语句结束符少了,下面这两句加语句结束符
p=(a+b+c)/2
s=sqrt(p*(p-a)*(p-b)*(p-c))

2、sqrt()函数的参数和返回值都是double类型,需要一个转换。

3、if 子句没有括号。修改代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c;
float s,p;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{ //
p=(float)(a+b+c)/2; //少语句结束符 ,少类型转换
s=(float)sqrt((double)p*(p-a)*(p-b)*(p-c)); //少语句结束符
printf("%f",s);
}
else printf("no\n");
return 0;
}

观楼主英俊潇洒,风流倜傥,必当世豪杰,大侠闲暇之余,关注0x30百度贴吧,必成千秋霸业,建不世之功。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-07
p=(a+b+c)/2
s=sqrt(p*(p-a)*(p-b)*(p-c))
后面加";"分号
p=(a+b+c)/2 里的2最好改成2.0

a+b>c最好写成(a+b)>c

if下面的三句话
p=(a+b+c)/2
s=sqrt(p*(p-a)*(p-b)*(p-c))
printf("%f",s);
用{}括起来
第2个回答  2013-03-07
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c;
float s,p;
scanf("%d,%d,%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)//加大括号
{
p=(a+b+c)/2;//少了分号
s=sqrt(p*(p-a)*(p-b)*(p-c));//少了分号
printf("%f",s);
}
else printf("no\n");
return 0;
}
第3个回答  2013-03-07
你的if语句怎么没有括号啊?应该是下面这样吧?
if(a+b>c&&a+c>b&&b+c>a)
{
p=(a+b+c)/2
s=sqrt(p*(p-a)*(p-b)*(p-c))
printf("%f",s);
}
else
printf("no\n");
第4个回答  2013-03-07
p=(a+b+c)/2.0;
下一行最后也要加分号。
相似回答