알고리즘
구조체를 사용하여아 하며 이를 활용한 성적 입력과 출력을 한다.
국어, 영어, 수학 이 3가지를 기본으로 하며 '총점, 평균, 등수' 등등을 비교하여 석차 순으로 출력한다.
출력 방법은 자유롭게 해도 상관 없다.
#include <stdio.h>
//구조체 선언
struct student{
char name[20];
int kor, eng, mat, sum, rank;
double ave;
};
//함수 선언
int main(){
int i, j, k;
struct문 사용. 총 두번의 선언이 있습니다.
//성적 입력
for(i=0; i<10; i++){
printf("%d번째 학생입니다. \n형식에 맞게 기입해주세요.\n\n", i+1);
printf(" 학생의 이름 : ");
scanf("%s", st[i].name);
fflush(stdin); //용량 높은 버퍼 삭제
printf(" 국어 성적 : ");
scanf("%d", &st[i].kor);
printf(" 영어 성적 : ");
scanf("%d", &st[i].eng);
printf(" 수학 성적 : ");
scanf("%d", &st[i].mat);
//평균 계산
printf("\n");
st[i].sum = st[i].kor + st[i].eng + st[i].mat;
st[i].ave = st[i].sum / 3.0f;
}
//석차 구하기
for(i=0; i<10; i++){//석차구하기
k = 1;
for(j=0; j<10; j++){
if(st[i].ave < st[j].ave){
k++;
}
}
st[i].rank = k;
}
//석차 내림차순
for(i=0; i<10; i++)
for(j=i; j<10; j++)
if(st[i].rank>st[j].rank){
선언함수 총 3번 사용하면 됩니다
temp = st[i];
st[i] = st[j];
st[j] = temp;
}
//성적 출력
printf("순위\t 이름\t국어\t영어\t수학\t총점\t평균\t\t\n");
printf("=====================================================\n");
for(i=0; i<10; i++){
printf(" %d\t%s\t %d\t %d\t %d\t%d\t%.1f\t\t\n", st[i].rank, st[i].name, st[i].kor, st[i].eng, st[i].mat, st[i].sum, st[i].ave);
} printf("=====================================================\n");
return 0;
}
'【그로잉】 > …Programming' 카테고리의 다른 글
C언어 잡담 #1. 오늘 시험보면서 가장 빡쳤던 문제 (0) | 2012.11.22 |
---|---|
C게임 #6. 구조체를 활용한 로그인 창 만들기 (0) | 2012.11.03 |
C게임 #4-3. 로또 만들기(下) (0) | 2012.10.06 |
C게임 #3-2. 숫자 야구게임(下) (0) | 2012.10.05 |
C게임 #4. 로또 만들기(中) (0) | 2012.10.04 |