[2003년 중간 1번] 성적 판정 - 조건문에 따른 출력 함수 작성
- 조건에 따른 출력 능력을 확인한다.
- 함수 생성을 안다.
2. 문제
- 점수 3개를 입력 받아 성적 판정을 확인한다. (입력값의 범위 소숫점 : 0.00 ~ 100.00)
- 판정 부분은 함수를 생성해서 코드의 크기를 줄인다.
- 판정 기준
(조건표)
- 출력 화면
점수 세 개를 입력하세요 : 90.99 20 100
===========================
90.99 에 대한 학점은 A입니다.
20.00 에 대한 학점은 F입니다.
100.00 에 대한 학점은 A+입니다.
Press any key to continue
3. 이해
- 조건문을 잘 이해 하였는가?
- 함수 루틴을 구현할수 있는가?
- 화면 출력을 정확히 할수 있는가?
4. 코드
#include <stdio.h>
void detect(double in)
{
printf("%2.02f 에 대한 학점은 ", in);
if(in >= 95 && in <= 100) { putchar('A'); putchar('+'); }
if(in >= 90 && in < 95) { putchar('A'); }
if(in >= 85 && in < 90) { putchar('B'); putchar('+'); }
if(in >= 80 && in < 85) { putchar('B'); }
if(in >= 75 && in < 80) { putchar('C'); putchar('+'); }
if(in >= 70 && in < 75) { putchar('C'); }
if(in >= 65 && in < 70) { putchar('D'); putchar('+'); }
if(in >= 60 && in < 65) { putchar('D'); }
if(in >= 0 && in < 60) { putchar('F'); }
printf("입니다.\n");
return;
}
int main()
{
float a,b,c;
a = b = c = 0;
printf("===========================\n");
printf(" 점수 세 개를 입력하세요 : ");
scanf("%f %f %f", &a, &b, &c);
printf("===========================\n");
detect(a);
detect(b);
detect(c);
return 0;
}
5. 해설
- detect 함수는 점수에 따른 원하는 결과값을 화면에 출력하는 함수 입니다.
- 특정 범위에 따른 출력은 C 의 switch-case 에서는 구현되지 않습니다.(베이직과 차이)
- scanf 에 소숫점 숫자 입력을 받는 자료형은 float 형이 입력되며 double 형을 입력하면 엉뚱한 값이
나옵니다.
- detect 형은 void 리턴 하며 입력 인수는 double 형 자료 입니다.
- putchar 문은 한글자를 출력하는 함수입니다. puts 을 써도 되지만 자동줄내림이 되므로 여기서는
쓰지 않았습니다.
6. 참고
- http://www.cplusplus.com/reference/clibrary/cstdio/scanf.html : scanf 함수
- 구글 검색 : && 논리 연산자