刚接触C语言,看到了算法竞赛的一道题目,写了几遍都出错,求助!

输入三角形3边的长度值(均为正整数),判断能否为直角三角形的3个边长。如果可以,则输出yes,否则输出no。

int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a < 1 || b <1 || c < 1) {
    printf("no\n");
}
a = a * a;
b = b * b;
c = c * c;
if (a + b == c) {
    printf("yes\n");
}
if (a + c == b) {
    printf("yes\n");
}
if (c + b == a) {
    printf("yes\n");
}
printf("no\n");

首先你需要想明白构成直角三角形的条件,然后让思想变成代码就简单了。

上面那个忘记考虑等腰直角三角形了,应该这样

 int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a < 1 || b <1 || c < 1) {
    printf("no\n");
}
a = a * a;
b = b * b;
c = c * c;
if ((a + b == c) || (a + c == b) || (b + c == a)  ) {
    printf("yes\n");
}
printf("no\n");
#include<stdio.h>

void main(){
  int a,b,c;
  scanf("%d%d%d",&a,&b,&c);
  if(a>b){     //令a为最大值
    if(a<c){
       int i;
       i=a;
       a=c;
       c=i;
    }//if
  }//if
  else {
     int j;
     j=a;
     a=b;
     b=j;
     if(a<c){
        int k;
        k=a;
        a=c;
        c=k;
     }//if  
  }//else
  if(a*a==b*b+c*c)
    printf("yes\n");
  else
    printf("no\n");
}

看一下 应该对

嗯嗯,问题已经解决了,谢谢大家

 #include<stdio.h>
int main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    if ((a + b <= c) || (a + c <= b) || (b + c <= a))
        printf("not a triangle\n");
    else if ((a*a + b*b == c*c) || (a*a + c*c == b*b) || (b*b + c*c == a*a))
        printf("yes\n");
    else
        printf("no\n");
    return 0;
}