제목 : 학점 계산 프로그램V0.0.1
글번호:
|
|
356
|
작성자:
|
|
레드플러스
|
작성일:
|
|
2013/01/26 오전 11:55:33
|
조회수:
|
|
5699
|
/*
학점 계산 프로그램
*/
#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);
}