运行没啥问题,输入的数字和结果显示也是对的,但是提交就显示错了。
%d之间的空格去掉
printf输出后面加\n
#include <stdio.h>
#define INVALID_TRIANGLE 0
#define ACUTE_TRIANGLE 1
#define OBTUSE_TRIANGLE 2
#define RIGHT_TRIANGLE 3
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
// sorts a, b, c from small to large.
void sort(int *a, int *b, int *c) {
if (*a > *b)
swap(a, b);
if (*a > *c)
swap(a, c);
if (*b > *c)
swap(b, c);
}
int check_triangle(int a, int b, int c) {
sort(&a, &b, &c);
if (a + b <= c)
return INVALID_TRIANGLE;
int s = a * a + b * b - c * c;
if (s > 0)
return ACUTE_TRIANGLE;
else if (s < 0)
return OBTUSE_TRIANGLE;
else
return RIGHT_TRIANGLE;
}
int main() {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
switch (check_triangle(a, b, c)) {
case INVALID_TRIANGLE:
printf("不能构成三角形\n");
break;
case ACUTE_TRIANGLE:
printf("能构成锐角三角形\n");
break;
case OBTUSE_TRIANGLE:
printf("能构成钝角三角形\n");
break;
case RIGHT_TRIANGLE:
printf("能构成直角三角形\n");
break;
default:
break;
}
return 0;
}
第二个if 后面的逗号什么鬼?
第7行怎么跑出来a,b<=c呢
代码太繁琐,建议先对a,b,c排个顺序,确保最大值小于较小值的和,这样就是三角形了。