소프트웨어/C

[2003년 중간 1번] 성적 판정 - 조건문에 따른 출력 함수 작성

카켈 2007. 2. 5. 21:58



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 함수
  - 구글 검색 : && 논리 연산자