제목 : 학점 계산 프로그램V0.0.1
    
    
        
            
                | 
                    글번호:
                 | 
                
                 | 
                
                    356
                 | 
            
            
                | 
                    작성자:
                 | 
                
                 | 
                
                    
                        레드플러스
                        
                        
                    
                 | 
            
            
                | 
                    작성일:
                 | 
                
                 | 
                
                    
                        2013/01/26 오전 11:55:33 
                    
                 | 
            
            
            
                | 
                    조회수:
                 | 
                
                 | 
                
                    
                        6721
                    
                 | 
            
            
        
     
 
    
	
	
    
	/*
    학점 계산 프로그램
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define N 3    // 3명만 처리
//[!] 학점 계산에 대한 구조체 설계
struct Record 
{
    int Num;        // 번호
    int Eng;        // 영어
    int Jap;        // 일어
    int Tot;        // 총점
    float Avg;        // 평균
    char Grade;        // 학점
    int Rank;        // 등수
};
void main(void)
{
    int i, j, k; 
    float max = 0.0; // 평균 최고값 담길 그릇
    //[0] Init : 초기화
    struct Record r[N];
    //[1] Input : 입력
    for (i = 0; i < N; i++)
    {
        printf("학생번호 : _\b"); scanf("%d", &r[i].Num); 
        printf("영어점수 : _\b"); scanf("%d", &r[i].Eng); 
        printf("일어점수 : _\b"); scanf("%d", &r[i].Jap); 
    }
    //[2] Process : 처리(알고리즘)
    for (i = 0; i < N; i++)
    {
        // 총점
        r[i].Tot = r[i].Eng + r[i].Jap;
        // 평균
        r[i].Avg = r[i].Tot / 2.0; // 실수형으로 나누고자 할 때에는 2.0 식으로 나눠라.
        // 학점
        if (r[i].Avg >= 91 && r[i].Avg <= 100)
        {
            r[i].Grade = 'A';
        }
        else if (r[i].Avg >= 81 && r[i].Avg <= 90)
        {
            r[i].Grade = 'B';
        }
        else if (r[i].Avg >= 71 && r[i].Avg <= 80)
        {
            r[i].Grade = 'C';
        }
        else
        {
            r[i].Grade = 'D';
        } // end if
        // 반올림 : 추가적인 조건 : C언어는 round() 함수를 제공하지 않음
        r[i].Avg = (int)(r[i].Avg + 0.5); // 소수 첫째 자리에서 반올림
        // 최대 평균
        if (max < r[i].Avg)
        {
            max = r[i].Avg; // 더 큰값으로 초기화
        }
    } // end for
    // 등수
    for (i = 0; i < N; i++)
    {
        r[i].Rank = 1; // 1등으로 초기화
        for (j = 0; j < N; j++)
        {
            if (r[i].Avg < r[j].Avg)
            {
                r[i].Rank++; // 나보다 평균점수가 큰 사람이 있으면 등수 1증가 :1등->2등
            }
        }
    }
    //[3] Output : 출력
    printf("\n번호 영어 일어 총점 평균 학점 등수\n");
    printf("==================================\n");
    for (i = 0; i < N; i++)
    {
        printf("%4d %4d %4d %4d %4.1f %4c %4d\n"
            , r[i].Num, r[i].Eng, r[i].Jap, r[i].Tot, r[i].Avg, r[i].Grade, r[i].Rank);
    }
    printf("최대 평균 : %4.1f\n", max);
}