STUDENT 구조체 배열을 선언하고, 위에서 제시된 학생 정보를 이용해 초기화한 다음 (위의 순서 그대로 초기화 할 것), 전체 학생 목록을 학기별로 오름차순으로 출력하는 print_student_list
함수를 구현한 후 이를 이용하여, 실행 결과를 출력하세요. 이 때, 번호(순서대로),이름, 학번, 학기, 수강과목이 차례로 출력되게 한다.
#include <stdio.h>
#include <string.h>
struct STUDENT{
char name[20];
char id[20];
int semester;
char class_name[20];
} ;
void print_student_list(struct STUDENT *ptr,int size){
printf("번호 이름 학번 학기 수강과목\\n");
for(int i=0;i<size;i++) {
printf("%d번 : %-10s %-15s %-10d %-10s\\n",i+1,ptr[i].name,ptr[i].id,ptr[i].semester,ptr[i].class_name);
}
};
int main() {
struct STUDENT students[]={
{"Minsu","2021001",2,"class1"},
{"Ayoung", "2021015", 2, "class2"},
{"Jihoon", "2018016", 8, "class5"},
{"Minsu", "2020013", 4, "class5" },
{"Sojung", "2021033", 2, "class3"},
{"Eunmi", "2019010", 3, "class4"},
{"Eunmi", "2018022", 5, "class1"},
{"Heejoon", "2018001", 7, "class4"}
};
//1,2,3번 모두 학기별로 오름차순 정렬된 STUDENT 배열이 필요하기 때문에 먼저 정렬을 함
struct STUDENT *ptr1=students;
int size=sizeof(students)/sizeof(struct STUDENT);
int idx=0;
struct STUDENT sortedStudents[size];
int maxSemester=-1; //가장 학기가 큰 경우를 구하기 위한 최소값 선언
for(int i=0;i<size;i++){
if(maxSemester<ptr1[i].semester) maxSemester=ptr1[i].semester;
}
for(int semester=1;semester<=maxSemester;semester++) {
for (int i = 0; i < size; i++) {
if (semester == ptr1[i].semester) sortedStudents[idx++] = ptr1[i];
}
}
struct STUDENT *ptr2=sortedStudents; // 정렬된 학생 포인터
// #Problem 1
printf("\\nProblem 1\\n");
print_student_list(ptr2,size);
return 0;
}
라이브러리 include
#include <stdio.h>
#include <string.h>
STUDENT
구조체 선언
struct STUDENT{
char name[20];
char id[20];
int semester;
char class_name[20];
} ;
print_student_list
함수
STUDENT
구조체 포인터, 학생수 size
를 파라미터로 받음