user-0 提问: 求助

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 引用 4 楼 user-3 的回复:[quote=引用 3 楼 自信男孩 的回复:][quote=引用 2 楼 user-3 的回复:]输入输出更可靠点，修改楼上的：#include <stdio.h>  int main() {     int  a, b, c;     char ch[2]={'Y'};      while(ch[0]=='Y'|| ch[0]=='y'){           while (1){                       //输入                 printf("输入三角形的三条边(正整数)：");                 fflush(stdout);                 rewind(stdin);                 if (scanf("%d%d%d", &a,&b,&c) != 3 || a < 0 || b < 0 || c < 0){                     printf("\n输入错误!\n");                     continue;                 }else                 if (a+b<=c || a+c<=b || b+c<=a){ //判断是否可构成三角形,任意两边之和大于第三边                     printf("\n输入的边长无法构成三角形!\n");                     continue;                 }else                     break;           }           if (a == b || a == c || b == c){//判断三角形类型              if (a==b && b==c && a==c){                 printf("\n输入的边长为等边三角形\n");              }else{                 printf("\n输入的边长为等腰三角形\n");              }           }           else              if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){                 printf("\n输入的边长为直角三角形\n");              }else{                 printf("\n输入的边长为任意三角形\n");              }           printf("\n是否继续判断其它三角形的类型[Y/N]?");           fflush(stdout);           rewind(stdin);           scanf("%s",ch);     }          return 0; } 输入0之后，只要有一个0是不是就应该不满足条件。没考虑到输入0的case吧[/quote] 0还是排除在外的，这里if (a+b<=c || a+c<=b || b+c<=a){ //判断是否可构成三角形,任意两边之和大于第三边[/quote]   if (scanf("%d%d%d", &a,&b,&c) != 3 || a < 0 || b < 0 || c < 0){ 放在这里判断会更好些～   if (scanf("%d%d%d", &a,&b,&c) != 3 || a <= 0 || b <= 0 || c <= 0){

user: user-3
content: 引用 3 楼 自信男孩 的回复:[quote=引用 2 楼 user-3 的回复:]输入输出更可靠点，修改楼上的：#include <stdio.h>  int main() {     int  a, b, c;     char ch[2]={'Y'};      while(ch[0]=='Y'|| ch[0]=='y'){           while (1){                       //输入                 printf("输入三角形的三条边(正整数)：");                 fflush(stdout);                 rewind(stdin);                 if (scanf("%d%d%d", &a,&b,&c) != 3 || a < 0 || b < 0 || c < 0){                     printf("\n输入错误!\n");                     continue;                 }else                 if (a+b<=c || a+c<=b || b+c<=a){ //判断是否可构成三角形,任意两边之和大于第三边                     printf("\n输入的边长无法构成三角形!\n");                     continue;                 }else                     break;           }           if (a == b || a == c || b == c){//判断三角形类型              if (a==b && b==c && a==c){                 printf("\n输入的边长为等边三角形\n");              }else{                 printf("\n输入的边长为等腰三角形\n");              }           }           else              if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){                 printf("\n输入的边长为直角三角形\n");              }else{                 printf("\n输入的边长为任意三角形\n");              }           printf("\n是否继续判断其它三角形的类型[Y/N]?");           fflush(stdout);           rewind(stdin);           scanf("%s",ch);     }          return 0; } 输入0之后，只要有一个0是不是就应该不满足条件。没考虑到输入0的case吧[/quote] 0还是排除在外的，这里if (a+b<=c || a+c<=b || b+c<=a){ //判断是否可构成三角形,任意两边之和大于第三边

user: user-2
content: 引用 2 楼 user-3 的回复:输入输出更可靠点，修改楼上的：#include <stdio.h>  int main() {     int  a, b, c;     char ch[2]={'Y'};      while(ch[0]=='Y'|| ch[0]=='y'){           while (1){                       //输入                 printf("输入三角形的三条边(正整数)：");                 fflush(stdout);                 rewind(stdin);                 if (scanf("%d%d%d", &a,&b,&c) != 3 || a < 0 || b < 0 || c < 0){                     printf("\n输入错误!\n");                     continue;                 }else                 if (a+b<=c || a+c<=b || b+c<=a){ //判断是否可构成三角形,任意两边之和大于第三边                     printf("\n输入的边长无法构成三角形!\n");                     continue;                 }else                     break;           }           if (a == b || a == c || b == c){//判断三角形类型              if (a==b && b==c && a==c){                 printf("\n输入的边长为等边三角形\n");              }else{                 printf("\n输入的边长为等腰三角形\n");              }           }           else              if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){                 printf("\n输入的边长为直角三角形\n");              }else{                 printf("\n输入的边长为任意三角形\n");              }           printf("\n是否继续判断其它三角形的类型[Y/N]?");           fflush(stdout);           rewind(stdin);           scanf("%s",ch);     }          return 0; } 输入0之后，只要有一个0是不是就应该不满足条件。没考虑到输入0的case吧

user: user-3
content: 输入输出更可靠点，修改楼上的：#include <stdio.h>  int main() {     int  a, b, c;     char ch[2]={'Y'};      while(ch[0]=='Y'|| ch[0]=='y'){           while (1){                       //输入                 printf("输入三角形的三条边(正整数)：");                 fflush(stdout);                 rewind(stdin);                 if (scanf("%d%d%d", &a,&b,&c) != 3 || a < 0 || b < 0 || c < 0){                     printf("\n输入错误!\n");                     continue;                 }else                 if (a+b<=c || a+c<=b || b+c<=a){ //判断是否可构成三角形,任意两边之和大于第三边                     printf("\n输入的边长无法构成三角形!\n");                     continue;                 }else                     break;           }           if (a == b || a == c || b == c){//判断三角形类型              if (a==b && b==c && a==c){                 printf("\n输入的边长为等边三角形\n");              }else{                 printf("\n输入的边长为等腰三角形\n");              }           }           else              if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){                 printf("\n输入的边长为直角三角形\n");              }else{                 printf("\n输入的边长为任意三角形\n");              }           printf("\n是否继续判断其它三角形的类型[Y/N]?");           fflush(stdout);           rewind(stdin);           scanf("%s",ch);     }          return 0; }

user: user-3
content: 供参考：#include <stdio.h>  int main() {     int  a, b, c;     char s='Y';      while(s=='Y'|| s=='y'){           while (1){                       //输入                 printf("输入三角形的三条边(正整数)：");                 if (scanf("%d%d%d", &a,&b,&c) != 3 || a < 0 || b < 0 || c < 0){                     while ((getchar())!='\n');                     printf("\n输入错误!\n");                     continue;                 }else                 if (a+b<=c || a+c<=b || b+c<=a){ //判断是否可构成三角形,任意两边之和大于第三边                     printf("\n输入的边长无法构成三角形!\n");                     continue;                 }else                     break;           }           if (a == b || a == c || b == c){//判断三角形类型              if (a==b && b==c && a==c){                 printf("\n输入的边长为等边三角形\n");              }else{                 printf("\n输入的边长为等腰三角形\n");              }           }           else              if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){                 printf("\n输入的边长为直角三角形\n");              }else{                 printf("\n输入的边长为任意三角形\n");              }           printf("\n是否继续判断其它三角形的类型[Y/N]?");           getchar();           scanf("%c",&s);     }          return 0; }