표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다. 여기서 네 과목의 평균 점수가 85점 이상일 때 합격이라고 정했습니다. 평균 점수에 따라 "합격", "불합격"을 출력하는 프로그램을 만드세요(scanf 함수 호출 전에 문자열을 출력하면 안 됩니다). 단, 점수는 0점부터 100점까지만 입력받을 수 있으며 범위를 벗어났다면 "잘못된 점수"를 출력하고 합격, 불합격 여부는 출력하지 않아야 합니다.
표준 입력
95 80 87 82
표준 출력
합격
표준 입력
95 79 83 81
표준 출력
불합격
정답
#include <stdio.h>
int main()
{
int korean;
int english;
int math;
int science;
scanf("%d %d %d %d", &korean, &english, &math, &science);
int average = (korean + english + math + science) / 4;
if (korean >= 0 && korean <= 100 && english >= 0 && english <= 100 && math >= 0 && math <= 100 && science >= 0 && science <= 100)
{
if (average >= 85)
printf("합격");
else
printf("불합격");
}
else
printf("잘못된 점수");
return 0;
}
풀이
국어 점수 저장할 int형 korean, 영어 점수 저장할 int형 english, 수학 점수 저장할 int형 math, 과학 점수 저장할 int형 science를 선언해주고 scanf 함수로 각 과목별 점수를 저장한다. 이제, 점수의 범위를 벗어나면 "잘못된 점수"를 출력하고 합격, 불합격 여부는 출력하지 말아야 하는데, 합격 불합격을 출력하지 않으려면 먼저 각 과목별 입력된 점수가 0점부터 100점의 범위를 벗어났는지 검사하는 코드를 짜야한다. 글쓴이는 두 조건이 참이면 결과가 참인 &&연산자를 이용하여 한 과목의 범위는 0 이상인 동시에 100 이하여야 하며, 4과목 모두 이 조건을 만족했을 때, 합격 불합격 여부를 판별하는 코드를 실행하도록 if문 안에 if문을 넣었다. 여기서 글쓴이는 코드를 보기 좋게 만들기 위해 average라는 변수를 선언해 각 과목의 점수를 4로 나눈 것이라는 식을 설정했다. 조건식에 (korean + english + math + science) / 4 >= 85와 같은 식으로 해도 상관없다. 그리고 바깥 if문이 하나라도 조건을 만족하지 못했을 때, "잘못된 점수"를 출력하도록 만들었다. 문제를 풀면서 합격 불합격은 쉽게 만들 수 있지만, 점수의 범위라는 조건을 설정하여 잘못된 점수가 출력될 때 합격 불합격을 출력하지 않아야 하는 것이 이 문제를 한층 어렵게 만든 조건이었다.
'C' 카테고리의 다른 글
[C] C언어 코딩 도장 20.8 심사문제: 비교 연산자 사용하기 (0) | 2022.04.26 |
---|---|
[C] C언어 코딩 도장 19.5 심사문제: 교통카드 시스템 만들기 (0) | 2022.04.26 |
[C] C언어 코딩 도장 18.9 심사문제: else 사용하기 (0) | 2022.04.26 |
[C] C언어 코딩 도장 17.8 심사문제: 청소년 콘텐츠 관람 제한하기 (0) | 2022.04.26 |
[C] C언어 코딩 도장 16.5 심사문제: 실수를 정수로 변환하기 (0) | 2022.04.26 |