문제 )
학생을 성적을 입력받아 학점을 출력하는 프로그램을 작성하시오 .
(단 학점은 90점 이상이면 A ,80점 이상 90점 미만이면 B, 70점이상 80점 미만이면 C, 60점이상 70점 미만 이면 D 60점 미만이면 F이다.)
코드)
#include<stdio.h>
main()
{
int score;
printf("점수를 입력하세요 : ");
scanf("%d", &score);
switch (score / 10) {
case 10:
case 9: printf("A학점 입니다\n"); break;
case 8: printf("B학점 입니다\n"); break;
case 7: printf("C학점 입니다\n"); break;
case 6: printf("D학점 입니다\n"); break;
default: printf("F학점 입니다\n");
}
}
해석)
이 코드의 핵심은 switch (score / 10) 이다
많은 사람들이 위 문제를 풀때 case 조건을 작성할때 혼란이 오는경우가 많은데 아주 잠깐만 생각을 해본다면 정말 간단한 문제이다
문제 조건에서 90이상 은 A학점 이라는 부분을 살펴보자 A학점을 받을수 있는 성적을 나열해보면
90,91,92.......100 점까지 그런데 이 10개를 전부 case를 걸어버리면 너무 비효율적이지 않은가?? 자 그럼 이점수들의 공통점을 살펴보면 100점을 제외하고는 모두 90점대의 점수라는것 ! 90점대 90점대 !!! 뭔가 생각나지 않나요 ? 91점, 92점 은 다른숫자이지만 이점수들을 10으로 나누면 int형에 저장되는 값은 결국 9!!!!!!!!!!!!!!!!!! 유레카 !! 100점은 10점 그러면 100점을 제외하고는 80점대 70점대 모두 똑같은 알고리즘이라는 사실 80점대는 10으로 나누면 전부 8!
70점대는 7 !! 그외 60점 미만은 디폴트로 F학점을 걸어버리면 해결끝나는 생각보다 아주 간단한 문제입니다 !
코딩이 어려우신분들은 이런식으로 문제푸는 사고방식부터 훈련하시는것을 추천드립니다 !
결과 )
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
점수를 입력하세요 : 5
F학점 입니다
C:\Users\ASUS\source\repos\ConsoleApplication11\Debug\ConsoleApplication11.exe(13480 프로세스)이(가) 0 코드로 인해 종료 되었습니다.
이 창을 닫으려면 아무 키나 누르세요.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
점수를 입력하세요 : 100
A학점 입니다
C:\Users\ASUS\source\repos\ConsoleApplication11\Debug\ConsoleApplication11.exe(1336 프로세스)이(가) 0 코드로 인해 종료되었습니다.
이 창을 닫으려면 아무 키나 누르세요.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
점수를 입력하세요 : 70
C학점 입니다
C:\Users\ASUS\source\repos\ConsoleApplication11\Debug\ConsoleApplication11.exe(6832 프로세스)이(가) 0 코드로 인해 종료되었습니다.
이 창을 닫으려면 아무 키나 누르세요.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'기타 > it' 카테고리의 다른 글
아이폰 '이 액세서리는 지원되지 않을 수 있습니다. ' 해결 방법 (0) | 2019.02.22 |
---|---|
C언어 라이브러리 함수 getchar()에 대해 알아보자 (0) | 2019.02.12 |
c언어 1차원배열 오름차순 정렬 /소스코드 및 해결방법/정렬 (0) | 2019.02.06 |
C언어[배열] 거스름돈,동전의 수 계산하는 프로그램 예제 , 코드소스 (0) | 2019.02.05 |
c언어-조건문 나이에 따라 입장료 다르게 받는 프로그램 [문제풀이/ 소스코드 ] (0) | 2019.02.03 |