题目:输入3个整数,判断是否构成三角形。为什么运行结果错误?(编程如下:)

来源:百度知道 编辑:UC知道 时间:2024/05/26 06:51:41
#include<stdio.h>
void main()
{int x(int a,int b,int c);
int a,b,c,y;
printf("please enter 3 integer number:");
scanf("%d,%d,%d",&a,&b,&c);
y=x(a,b,c);
if(y==0)
printf("不能组成三角形");
else if(y==1)
printf("组成的是等边三角形");
else if(y==-1)
printf("组成的是等腰三角形");}
int x(int a,int b,int c)
{int y;
if(a+b>c&&a+c>b&&b+c>a)
{if(a==b||a==c||b==c) y=-1;else if(a==b&&b==c) y=1;}
else y=0;
return(y);}

一楼只是增加了一种情况的讨论,没有找到错误啊,运行结果仍然是错的。
楼主的程序有2处错误,一处为语法错误,一处为逻辑错误。
第一处错误在输入函数scanf("%d,%d,%d",&a,&b,&c); 该函数要求读入数据间以“,”隔开,如果数据格式不符的话读入结果错误。例如输入“4 4 5”,则a读入4,而b,c没有读入,将保留原始的随机数,必须输入“4,4,5”才能正确读数。
第二处错误在于判断等边三角形时用了 else if,因为等边三角形也满足等腰三角形的条件,排除了等腰也就派出了等边,即该条件语句永远非真。修改后的结果如下:
#include<stdio.h>
int main()
{
int x(int a,int b,int c);
int a,b,c,y;
printf("please enter 3 integer number:");
scanf("%d%d%d",&a,&b,&c);
y=x(a,b,c);
if(y==0)
printf("不能组成三角形");
else if(y==1)
printf("组成的是等边三角形");
else if(y==-1)
printf("组成的是等腰三角形");
else if(y==2)
printf("组成的是一般的三角形");
//getchar();getchar();
return 0;
}
int x(int a,int b,int c)
{
int y=0;
if(a+b>c&&a+c>b&&b+c>a)
{
y=2;
if(