#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int start_num = 0;//메뉴선택
int std_date_num = 0;//입력한 학생 수 저장
struct date {//학생 정보가 들어있는 구조체
int num;//학번
char name[256];//이름
int score;//시험점수
} std_date[50];//구조체를 배열로 50개 선언
void menu();//메뉴함수 프로토타입선언
void std_date_w();//학생정보입력함수 프로토타입선언
void std_ranking();//학생등수결정함수 프로토타입선언
void std_ranking_r();//학생등수출력함수 프로토타입선언
void main()
{
do {
menu();
switch(start_num)
{
case 1:
std_date_w();
break;
case 2:
std_ranking();
std_ranking_r();
break;
case 0:
printf("프로그램을 종료합니다.n");
break;
default :
printf("잘못 입력하셨습니다.n");
break;
}
} while(start_num != 0);
}
void menu()//메뉴
{
printf("┏━━━━━━━━━┓n");
printf("┃등수저장 프로그램 ┃n");
printf("┃1.학생 데이터 입력┃n");
printf("┃2.학생 순위 출력 ┃n");
printf("┃0.종료 ┃n");
printf("┗━━━━━━━━━┛n");
scanf("%d", &start_num);
}
void std_date_w()//학생정보입력
{
int exit = 0;
do {
printf("학생 데이터 입력입니다.n");
printf("학생의 학번을 입력해주세요.n");
printf("▷▶");
scanf("%d", &std_date[std_date_num].num);
printf("학생의 이름을 입력해주세요.n");
printf("▷▶");
fflush(stdin);
gets(std_date[std_date_num].name);
printf("학생의 점수를 입력해주세요.n");
printf("▷▶");
scanf("%d", &std_date[std_date_num].score);
std_date_num ++;
printf("종료하시려면 0번을, 계속 입력하시려면 다른 숫자키를 눌러주세요.n");
printf("▷▶");
scanf("%d", &exit);
} while(exit != 0);
}
void std_ranking()
{
for(int i = 0;i <= std_date_num-1;i++)
{
for(int j = 0;j <= std_date_num-1;j++)
{
if(std_date[j].score <= std_date[j+1].score)
{
std_date[50] = std_date[j];
std_date[j] = std_date[j+1];
std_date[j+1] = std_date[50];
}
}
}
}
void std_ranking_r()//학생등수출력
{
for(int i = 0;i <= std_date_num-1;i++)
{
printf("***%d등***n", i+1);
printf("학번 : %dn", std_date[i].num);
printf("이름 : %sn", std_date[i].name);
printf("점수 : %dn", std_date[i].score);
}
}
------------------------------------
학생 점수를 입력해서 순위를 정하는 건데요
따로따로하면 전부 되는데
스위치문에 넣고하면 이상하게 순위를 정해서 출력하는 부분이 씹혀버려요;;
왜이럴까요?[...]
황당한건 예~~전에 이거랑 똑같이 만든건 됐는데 이번껀 안된다는 사실[....]
....복습이고 나발이고 다때려치울까emoticon_00emoticon_20
전역변수 쓰지 않는 방향으로 새로 설계해보심이 어떨까요.