C语言程序输出错误,怎么回事?

输入三角形三边长,求面积inta,b,c;   floatt,s;   printf("请输入三边长a,b,c... 输入三角形三边长,求面积
int a,b,c;
    float t,s;
    printf("请输入三边长a,b,c:");
    scanf("%d %d %d",&a,&b,&c);
    t=(a+b+c)/2;
    s=sqrt((t-a)*(t-b)*(t-c)*t);
    printf("面积s=%.2f",s);
getch();
return 0;
当输入三边长为2,6,7(a+b-1=c)时,面积显示为零,其他则输出正常,怎么回事?
展开
 我来答
百度网友5a4855d
2019-03-24
知道答主
回答量:12
采纳率:0%
帮助的人:8548
展开全部
正常情况,一般都是这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuzhouliuying
高粉答主

2019-03-24 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:5.4万
采纳率:86%
帮助的人:2.4亿
展开全部
a、b、c都是整型,(a+b+c)/2是整型运算。
当输入为2、6、7时,t=(2+6+7)/2=7
t-7=7-7=0,根号下乘积项中有一项为0,乘积为0,开根号,s=0
这是由于将a、b、c都定义为整型造成的。不只是2、6、7这一组,只要是a、b、c为整型,(a+b+c)/2的计算结果与其中一条边长相等,都会出现这个问题。
解决方法:
int a,b,c;改为float a,b,c;
scanf("%d%d%d",&a,&b,&c);改为scanf("%f%f%f",&a,&b,&c);
更多追问追答
追问

改了,还是不行啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式