大学C语言初学者一枚,这是一个程序测试的作业(判断三角形的类型),错在哪里?

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

printf("Input the three edge length:");
scanf("%f, %f, %f", &a, &b , &c);
if (a+b>c && b+c>a && a+c>b) /*三角形的基本条件*/
{
if (a==b || b==c || c==a)
printf("等腰三角形");
else if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
printf("直角三角形");
else
printf("一般三角形");
}
else
{
printf("不是三角形\n");
}
}
可能不仅有程序错误,还有本身逻辑错误。。运行时好像输什么都跳到了“不是三角形”那。。而且好像没有考虑到等腰直角三角形的情况?望大神们不吝赐教。。

本身逻辑没错,你输入1   2  3,就可以得到不是三角形


至于等腰直角三角形的情况?

#include <stdio.h>
#include <math.h>
main()
{
 float a, b, c;
 
 printf("Input the three edge length:");
 scanf("%f, %f, %f", &a, &b , &c);   
 if (a+b>c && b+c>a && a+c>b) /*三角形的基本条件*/
 {
  if (a==b || b==c || c==a)
  {
     if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
           printf("等腰直角三角形");
     else 
          printf("等腰三角形");
   }
  else if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
   printf("直角三角形");
  else
   printf("一般三角形");  
 }
 else
 {
  printf("不是三角形\n");
 }
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-11
无论如何都不是三角形?
也可能是你输入的问题,你是怎么输入的?
3,4,5,像这样?
第2个回答  2014-11-11
#include <stdio.h>
#include <math.h>
int main()
{
 float a, b, c;
 int flag=0;
 
 printf("Input the three edge length:");
 scanf("%f, %f, %f", &a, &b , &c);   
 if (a+b>c && b+c>a && a+c>b) /*三角形的基本条件*/
 {
  if (a==b || b==c || c==a)
  {
flag=1;
printf("等腰三角形");
  }
  if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
  {
flag=1;
printf("直角三角形");
  }
  if(flag==0)
printf("一般三角形");  
 }
 else
 {
  printf("不是三角形\n");
 }
 return 0;
}

注意直角三角形也可能是等腰三角形,比如等腰直角三角形,所以判断不能用else if,而直接用if判断。另外判断是一般三角形,也不能用else if,因为如果用了else if 就是说在非直角三角形中判断,假如是等腰三角形,但不是直角三角形,就会输出一般三角形,是不符合逻辑的

第3个回答  2014-11-11
a,b,c是float型,c语言中float型判断相等不能直接用==,用fabs(a-b)<0.00001判断相等】

另外,建议输入不要“,”scanf("%f%f%f", &a, &b , &c);以防输入时忘记导致输入错误
第4个回答  2014-11-11
因为scanf里面不能用,啊

c语言初学,三角形判别,请问哪里错了,谢谢!
不是中文的分号else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)printf("直角三角形");\/\/是英文的分号,不是中文的分号else printf("一般三角形");\/\/是英文的分号,

C语言,判断三角形类型的程序哪里错了 请教,谢谢!
第一个else if 后面的括号语句有问题;正确的程序如下(注意在使用是要在纯英文输入状态下)include<stdio.h> include<conio.h> void main(){ float a,b,c;printf("输入三角形三边长度:\\n");scanf("%f%f%f",&a,&b,&c);if((a+b>c)&&(a+c>b)&&(b+c>a)){ if((a!=b)&&(b!...

C语言代码,判断三角形形状,具体的怎么写?我有思路,看看哪里错了
include<stdio.h>int main(){ double a,b,c; scanf("%lf%lf%lf",&a,&b,&c); if(a*a==b*b+c*c) { printf("直角三角形\\n"); } else { printf("err\\n"); } }测试结果:

c语言对三角形的判断,哪里出错了?
2.首先代码没有进if(a+b>c&&a+c>b&&b+c>a)这个判断里,直接else printf("无法构成三角形");了,所以你要看看输入的值a,b,c对不对,3.打印后发现a,b,c都不是自己输入的数字,那一定是输入的时候有问题了,4.所以scanf("f%","f%","f%",&a,&b,&c);有错了哦,改成scanf_s("...

C语言判断是否及构成怎样的三角形,麻烦看一下过程哪里有错误?
{ if(a==b&&b!=c&&a!=c)\/\/两边相等,且都与第三边不等;等腰三角形 x=2;if(a==b&&c==a&&b==c)\/\/三边相等,等边三角形 x=3;if(a!=b&&b!=c&&c!=a)\/\/三边都不相等,普通三角形 x=1;} else\/\/否则不成立;x=0;printf("%d",x);return 0;} ...

c语言的题目 三角形的判断问题
"%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3); double a,b,c,p,L,A,l,m,n; a=sqrt ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); b=sqrt ((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); c=sqrt ((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));...

如何用c语言判定三角形的类型
通过C语言代码实现,可以判定三角形的类型。首先需要输入三角形的三边长度。代码中,先判断输入的三边长度是否都大于0,因为三边长度必须为正数。然后,根据三角形三边关系进行判断:如果任意两边之和大于第三边,满足三角形的成立条件。接着,进一步判断三角形的类型。如果三边相等,则为等边三角形,输出...

c语言编程,判断三角形形状,
你的输入错误了吧?你限定的输入格式是用逗号隔开的 输入例子一13,13,13 例子二13,23,13

C语言:判断三角形是否为直角三角形
首先是输入3个数,即三角形三条边,要有等于才行 前面3个条件满足,才能构成三角形;否则不是三角形 然后判断,是否有满足直角形的条件;只要有两个边得平方等于另一个边得平方;即使直角三角 形;输出yes 你把最后两个语句去掉看看,还有 else if(c > b+c)printf("not a triangle\\n");你打...

c语言,判断三角形类型,等腰,等边,一般或不能构成,
{printf("等边三角形");}else if(a==b || a==c || b==c){printf("等腰三角形");}else if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){printf("直角三角形");}else{printf("普通三角形");}}else{printf("非三角形");}printf("\\n");return 0;} ...

相似回答