제목 : 8.1.4. 예제. 구조체를 사용한 성적처리 프로그램 : 구조체_성적처리.c
글번호:
|
|
129
|
작성자:
|
|
레드플러스
|
작성일:
|
|
2005/08/10 오후 3:49:45
|
조회수:
|
|
10811
|
#include <stdio.h>
#define N 2
// 구조체 설계
struct Score{
char name[10]; // *name : 이름
int kor;
int eng;
int tot;
double avg;
int rank; // 등수
};
void main(){
int i = 0;
int j = 0;
struct Score temp;
int r = 0;
int maxEng = 0;
char *maxEngName;
//구조체 형 배열 선언
/*
struct Score objScore[2] = {
{"홍길동",95,80,0,0.0},
{"백두산",80,100,0,0.0}
};
*/
//구조체 형 배열 초기화 : scanf()
struct Score objScore[N];
// Input
for(i = 0; i < N; i++){
printf("\n%d번째 이름 : ", i+1);
scanf("%s", &objScore[i].name);
//gets(objScore[i].name);
printf("\n국어점수 : ");
scanf("%d", &objScore[i].kor);
printf("\n영어점수 : ");
scanf("%d", &objScore[i].eng);
}
// Process : 총점과 평균구하기.
for(i = 0; i < N; i++){
// 총점
objScore[i].tot = objScore[i].kor + objScore[i].eng;
// 평균
objScore[i].avg = objScore[i].tot / 2.0;
}
// 순위 알고리즘 적용
for (i = 0; i < N; i++)
{
r = 1; // 1등으로 초기화
for (j = 0; j < N; j++)
{
if (objScore[i].tot < objScore[j].tot)
{
r++;
}
objScore[i].rank = r;
}
}
// 등수에 따라서 오름차순 정렬해서 출력하시오...
for (i = 0; i < N - 1; i++)
{
for (j = i + 1; j < N; j++)
{
if (objScore[i].rank > objScore[j].rank)
{
temp = objScore[i];
objScore[i] = objScore[j];
objScore[j] = temp;
}
}
}
// 최대값 알고리즘 적용
for (i = 0; i < N; i++)
{
if (maxEng < objScore[i].eng)
{
maxEng = objScore[i].eng;
maxEngName = objScore[i].name;
}
}
// Output : 결과 출력
printf("\n이 름 국어 영어 총점 평 균 등수\n");
for(i = 0; i < N; i++)
{
printf("%6s %4d %4d %4d %4.1f %4d\n", objScore[i].name, objScore[i].kor, objScore[i].eng,
objScore[i].tot, objScore[i].avg, objScore[i].rank);
}
printf("영어 점수 최고 : %d\n", maxEng);
printf("영어 점수 최고 득점자 : %s\n", maxEngName);
// 계속 원하는 정보를 확장해서 출력할 수 있다...
}