首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新手请问个有关问题,看下那里出错了

2012-03-24 
新手请教个问题,看下那里出错了。计算三角形面积的问题,输入3条边然后算出面积。#include stdio.h#include

新手请教个问题,看下那里出错了。
计算三角形面积的问题,输入3条边然后算出面积。
#include <stdio.h>
#include <math.h>
void main()
{
  float a,b,c,s,h;
  s=1.0/2*(a+b+c);
  scanf("%f,%f,%f",&a,&b,&c);
  h=sqrt(s*(s-a)*(s-b)*(s-c));
  printf("a=%4.2f,b=%4.2f,c=%4.2f,s=%4.2f\n",a,b,c,s);
  printf("h=%4.2f\n",h);
}
   



为什么 运行的时候会出现错误的结果?比如输入 3,4,6回车为什么算出来的结果不一样啊。指点错在那里?谢谢,刚学 新手一个,

[解决办法]
在C中, (a+b+c)/2 不等于 1/2*(a+b+c)
你别从数学公式直接去套。 ^_^

变量 a, b, c 都是声明为float类型的,(a+b+c)/2得先运算 (a+b+c),其结果是float类型,进行/运算时,那个2也会转换成float类型来进行运算。

但运算 1/2*(a+b+c) 时,因 / 与 * 是平级的,会先做 / 运算再做 *运算。1/2 结果为0。引起的后果,相信你已经明白了。

[解决办法]
lz的问题是在abc没输入前先算的s,自然结果不是你想要的
而一楼后边的应该把1/2修改为1.0/2就没问题了

[解决办法]
scanf("%f,%f,%f",&a,&b,&c);中%f,%f,%f之间用的逗号,在输入数据时也要加逗号,如果去掉逗号,输入时就不用逗号,而用空格。

热点排行