본문 바로가기

C

[C언어] 실습: 국어, 영어, 수학 점수를 입력받은 후, 총점, 평균, 학점 구하기 (Function)

반응형

국어, 영어, 수학 점수를 입력받은 후, 총점, 평균, 학점 구하기 (Function)

(총점, 평균, 학점에 대한 각 기능별 함수 구현)


입력형식 출력형식
 국어:
 영어:
 수학:
 국어: xx, 영어: xx, 수학: xx
 총점: xx, 평균: xx.xx, 학점: xx

 

#include<stdio.h>

int total(int a, int b, int c);   // '총점'을 구하는 함수 선언
double average(int a);            // '평균'을 구하는 함수 선언
char level(double a);             // '학점'을 구하는 함수 선언

int main(){

   int kor = 0, eng = 0, math = 0;   // 국어, 영어, 수학 점수를 저장할 변수 선언
   int sum = 0;                      // 총점 변수
   double avg = 0.0;                 // 평균 변수
   char grade = 0;                   // 학점 변수

   do{
      printf("국어 : ");
      scanf("%d", &kor);
   } while(kor < 0 || kor > 100);   // 입력받은 국어 점수(kor)의 범위가 0 ~ 100에 해당이 안되면 do로 돌아가 점수를 다시 입력받는다.

   do{
      printf("영어 : ");
      scanf("%d", &eng);
   } while(eng < 0 || eng > 100);

   do{
      printf("수학 : ");
      scanf("%d", &math);
   } while(math < 0 || math > 100);

   sum = total(kor, eng, math);   // 함수를 호출 한 후, 반환값을 변수 sum에 저장한다.
   avg = average(sum);
   grade = level(avg);

   printf("국어 : %d, 영어 : %d, 수학 : %d\n", kor, eng, math);
   printf("총점 : %d, 평균 : %.2lf, 학점 : %c\n", sum, avg, grade);

   return 0;
}

int total(int a, int b, int c){
   return a + b + c;
}

double average(int a){
   return a / 3.;
}

char level(double a){
   switch((int)a / 10){   // switch(값)의 '값'은 정수형만 취급할 수 있기 때문에, double형인 a를 int형으로 casing 해준다.
   case 10: case 9: return 'A';
   case 8: return 'B';
   case 7: return 'C';
   case 6: return 'D';
   default: return 'F';
   }
}

 

반응형