#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1, num2, num3, num4;
scanf("%d %d %d %d", &num1, &num2, &num3, &num4);
if (100 <= num1 <= 0 && 100 <= num2 <= 0 && 100 <= num3 <= 0 && 100 <= num4 <= 0)
if ((num1 + num2 + num3 + num4 )/ 4 >= 85)
printf("합격\n");
else
printf("불합격\n");
else
printf("잘못된 점수\n");
return 0;
}
뭐가 잘못된건지 가르쳐주세요~~직접 해볼떄는 맞는거같은대 심사문제는 틀렸다고 나오네요.
if (100 <= num1 <= 0 && 100 <= num2 <= 0 && 100 <= num3 <= 0 && 100 <= num4 <= 0)
C 언어는 이런 형태의 조건식을 지원하지 않습니다. 수학적인 표기와는 차이가 있습니다.
또한, 이 조건식의 의미도 틀렸습니다.
100 <= num1은 num1이 100보다 크거나 같다는 뜻이 됩니다.
num1 <= 0은 num1이 0보다 작거나 같다는 뜻이 됩니다.
100보다 크거나 같으면서 0보다 작거나 같은 수는 없습니다.
동작하는 것처럼 보이는 것은 우연의 일치일 뿐입니다.
num1 = 80인 경우에
100 <= 80이 되므로 false가 됩니다.
false는 C 언어에서 0입니다.
따라서
0 <= 0이 되어 true가 됩니다.
num1 = 120인 경우에
100 <= 120이 되므로 true가 됩니다.
true는 C 언어에서 1입니다.
1 <= 0이 되므로 false가 됩니다.
100 <= num1 <= 0 // C 언어에서 지원하지 않는 문법이며 컴파일러에 따라 동작이 달라집니다.
한 번에 하나만 비교하고, &&나 ||를 사용해서 풀어야 합니다.