#include<stdio.h>
//=======전역변수
int stop_chack = 1;//스탑체크
int j = 0;//순서
//=======함수
void profile_record();//성적입력
void print_profile();//성적보기
int menu();
//=======구조체
struct data {
char std_name[256];//이름저장
int std_num;//학번저장
char std_class[256];//학과저장
int c_score;//C언어 점수저장
int engi_score;//공학설계 점수저장
int vb_score;//닷넷 점수저장
int avr;//평균
} list[9];
//=======메인
void main()
{
printf("성적관리 프로그램입니다.n");
while(stop_chack != 0)
{
menu();
if(stop_chack != 0)
{
switch(stop_chack)
{
case 1:
profile_record();
break;
case 2:
print_profile();
break;
case 0:
break;
}
}
}
}
//=======메뉴함수
int menu()
{
printf("메뉴를 선택해주세요.n");
printf("1. 학생 성적입력n");
printf("2. 학생 성적보기n");
printf("0. 종료n");
printf("▷▶");
scanf("%d", &stop_chack);
return stop_chack;
}
//=======학생 성적입력함수
void profile_record()
{
int stop_chack;
do
{
if(stop_chack != 0)
{
printf("학생의 이름을 입력하시오.n");
printf("▷▶");
fflush(stdin);
gets(list[j].std_name);
printf("학생의 학번을 입력하시오.n");
printf("▷▶");
scanf("%d", &list[j].std_num);
printf("학생의 학과를 입력하시오.n");
printf("▷▶");
fflush(stdin);
gets(list[j].std_class);
printf("%s 학생의 C언어 점수를 입력하시오.n", list[j].std_name);
printf("▷▶");
scanf("%d", &list[j].c_score);
printf("%s 학생의 공학설계 점수를 입력하시오.n", list[j].std_name);
printf("▷▶");
scanf("%d", &list[j].engi_score);
printf("%s 학생의 닷넷 점수를 입력하시오.n", list[j].std_name);
printf("▷▶");
scanf("%d", &list[j].vb_score);
list[j].avr = (list[j].c_score*list[j].engi_score*list[j].vb_score)/3;
j++;
printf("종료하시려면 0을, 더 입력하시려면 아무숫자나 눌러주세요.n");
scanf("%d", &stop_chack);
}
}while(stop_chack != 0);
printf("n");
}
//==학생 성적출력함수
void print_profile()
{
printf("학생들의 성적입니다.n");
for(int i=0;i<=7;i++)
{
if(list[i].avr<=list[i+1].avr)
{
list[8] = list[i];
list[i] = list[i+1];
list[i+1] = list[8];
}
}
for(i=0;i<=7;i++)//아직 다 못했음
{
printf("%d등: %sn", i+1, list[i].std_name);
printf("학번: %d 학과: %sn", list[i].std_num, list[i].std_class);
printf("C언어 점수: %d 공학설계 점수: %d 닷넷 점수: %d 평균: %dn", list[j].c_score, list[j].engi_score, list[j].vb_score, list[j].avr);
}
printf("n");
}
=====================================
위 소스를 실행하고 정보를 입력한담에 출력을 하면
이름과 학과는 제대로뜨는데 숫자는 모두 0으로뜨네요;;
역시 정렬한답시고 구조체를 복사한다는 발상이 잘못된걸까요?;;
-> 첨자가 i가 되어야 하겠죠
list[j].avr = (list[j].c_score*list[j].engi_score*list[j].vb_score)/3;
-> 평균을 의도하신거면 곱이 아니라 합을 계산하셔야겠죠
그리고 위의 정렬은 제대로 동작하지 않습니다. 간단하게 버블정렬로 하시려면 2중 루프로 n(n-1)/2 만큼 수행하셔야 합니다.