编程 输入三角形边长,求面积,s=1/2(a+b+c),area=sqrt(s*(s-a)*(s-b)*(s-c)).
#include<stdio.h>#include<math.h>intmain(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&...
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c&&a+c>b&&b+c>a)
{s=1/2*(a+c+b);<br> area=sqrt (s*(s-a)*(s-b)*(s-c));<br> printf("s=%f\n area=%f\n",s,area);<br> }
return 0;
} 无论我输入什么数字,结果都是s=0.000000 area=0.000000到底哪里错了= ~ 展开
#include<math.h>
int main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c&&a+c>b&&b+c>a)
{s=1/2*(a+c+b);<br> area=sqrt (s*(s-a)*(s-b)*(s-c));<br> printf("s=%f\n area=%f\n",s,area);<br> }
return 0;
} 无论我输入什么数字,结果都是s=0.000000 area=0.000000到底哪里错了= ~ 展开
推荐于2018-04-10
展开全部
主要的错误在于1/2,这个元素本来按我们的想法,结果应该是0.5,但是计算机计算结果确实0,因为/这个运算符的左右操作数都是整数,所以返回的计算结果也是整数,于是,无论你如何计算,0*任何数值都是0,s总是0,area也总是0。将1/2改为1/2.0,这样计算机计算结果也将返回double类型,也就是0.5,程序就可以正常运行!
2013-11-23
展开全部
scanf("%f,%f,%f",&a,&b,&c);你在输入数据的时候,中间要有, 比如1.1,2.2,1.5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-23
展开全部
if (a+b>c&&a+c>b&&b+c>a) 这句。改成 if(a+b>c||a+c>b||b+c>a) 试试看。我也是才学。 你试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-23
展开全部
s=1/2*(a+c+b); 改成 s=(a+c+b)/2; 你看看?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-23
展开全部
s=1/2*(a+c+b);由于s是folat型,所以应该该为s=1.0/2*(a+c+b);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询