#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int korean;
int english;
int mathematics;
int science;
int average;
scanf("%d\n", &korean);
scanf("%d", &english);
scanf("%d", &mathematics);
scanf("%d\n", &science);
if (korean < 0 || korean > 100 || english < 0 || english > 100 || mathematics < 0 || mathematics > 100 || science < 0 || science > 100)
{
printf("잘못된 점수\n");
}
else
{
average = (korean + english + mathematics + science) / 4;
printf("%d\n", average);
if (average >= 85)
{
printf("합격");
}
else
{
printf("불합격");
}
return 0;
}
return 0;
}
비주얼에서는 잘 돌아갔는데
오답이라고 나오네요
scanf의 서식 지정자에는 \n을 쓰면 안 됩니다.
scanf는 한 번만 사용해야 합니다. scanf를 한 번만 사용해서 여러 값을 입력받아야 합니다. 자세한 내용은 Unit 11.2를 참조하세요.
scanf를 한 번만 사용해야 하는 깊이 있는 이유는 Unit 85.20을 참조하세요.
문의한 코드는 삭제합니다.
이렇게 해보았는데요 점수를 입력할 때
120
30
50
20
이렇게 입력하려고 하면 120입력했을 때 바로 잘못된 점수라고 나와야되는건가요??
(도장_ 관리자에 의해 편집됨 - 원문 제출일 2018년 2월 9일, 금요일, 오전 9:38 )
문제를 보면 테스트 입력이 있습니다.
입력즉, 프로그램을 실행했을 때 한 줄에
95 80 87 82
95 80 87 82이렇게 입력해야 합니다. 한 줄에 하나씩 입력하면 안 됩니다. 120점을 입력한 순간에 '잘못된 점수'라고 출력하지 않습니다.
이 심사문제는
1. 한 번에 성적 4개를 입력 받는다
2. 결과에 따라 '합격', '불합격', '잘못된 점수'를 출력한다.
입니다.
테스트 결과를 보면 다음과 같습니다.
결과
합격
입력된 결과를 토대로 합격, 불합격, 잘못된 점수라고 출력하면 됩니다.
문의한 코드에서 다음 부분은 심사에서 평가하는 부분이 아니므로 삭제해야 합니다. 디버깅용으로 사용 중인 코드로 보입니다.
printf("%d\n", average);
average 변수를 사용하려면 먼저 초기화해야 합니다.
int average = 0;
처럼 선언과 초기화를 동시에 해야 합니다.
if (average >= 85)
{
average = (korean + english + mathematics + science) / 4;
printf("합격");
}
if 문 안에서 average 변수를 계산하고 있는데, 이미 if문에서 average 변수를 사용하고 있습니다. average 계산은 if문 밖에서 먼저 실행되어야 합니다.
코드가 잘 안 될 때는 먼저 처리 순서를 종이에 메모해서 정리하는 게 좋습니다.
또한, 코드가 꼬여서 문제가 잘 보이지 않을 때는 프로젝트를 새로 만들어서 처음부터 코드를 작성하는 방법도 좋습니다. 뒤엎기라고 부르는데, 프로그래머들도 종종 쓰는 방법입니다.
ps. 포럼에서 18.10으로 검색하면 이전에 문의된 Q&A를 볼 수 있습니다.