三角形面积问题c语言

发布网友 发布时间:2022-04-22 08:25

我来回答

5个回答

热心网友 时间:2022-06-18 14:27

其实是因为这句错了,导致下面那句错.
scanf("%d%d%d",&a,&b,&c);
这句才是真正错的.
因为两个%d没有*位数的直接连接,编译器无法生成有效的输入的
你可以改成
scanf("%d,%d,%d",&a,&b,&c);
加两个逗号就好了.

否则如果你要输入一个边长11的等边三角形你将输入6个1,
程序无法知道你输入的是11,11,11还是1,11,111或者是11,1,111等等,所以你需要加分隔的符号.

热心网友 时间:2022-06-18 14:27

#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,p,area;
printf("请输入3条边长:");
scanf("%f%f%f",&a,&b,&c); /*由键盘输入3个数*/
if(a+b>c&&a+c>b&&b+c>a)
{p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面积是:%f\n",area);
}
else
printf("这3个数无法组成三角形!\n");
}
并列的条件要用&&连接
我帮你改好了已经可以执行ELSE了

热心网友 时间:2022-06-18 14:28

#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,p,area;

printf("请输入3条边长:");
scanf("%f%f%f",&a,&b,&c); /*由键盘输入3个数*/
if(a+b>c)
if(a+c>b)
if(b+c>a)
{
p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面积是:%f\n",area);
}
else
printf("b+c<=a,error!!!\n");
esle
printf("a+c<=b,error!!!\n");
else
printf("a+b<=c,error!!!\n");

reutrn 0;
}

if(a+b>c,a+c>b,b+c>a)这个判断语句相当于只是判断了b+c>a,而其他两个没有判断(逗号运算符)

原先你的程序,如果是b+c<=a的话,就执行了else后面的语句来自:求助得到的回答

热心网友 时间:2022-06-18 14:28

if(a+b>c,a+c>b,b+c>a) 逗号表达式的值是最后一个语句的值 所以 这个if语句等于

if (b+c > a)

应该改成 if(a+b>c && a+c>b && b+c>a)

热心网友 时间:2022-06-18 14:29

虽然不知道你要问什么,还是想跟你说下if(a+b>c,a+c>b,b+c>a)要换成if(a+b>c&&a+c>b&&b+c>a)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com