发布网友 发布时间: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)