C언어/Homework

[C언어] 구조체 포인터와 배열을 이용한 탐색과 정렬

달의요정루나 2022. 3. 28. 22:24
#include <stdio.h>

struct student {
	char name[8];
	int hakbun;
	float grade;
};

struct student s1 = { "홍길동",2020006,3.2 };
struct student s2 = { "임꺽정",2020004,2.7 };
struct student s3 = { "이순신",2020002,4.3 };
struct student s4 = { "김유신",2020001,3.3 };
struct student s5 = { "강감찬",2020003,3.8 };
struct student s6 = { "김선달",2020005,1.5 };

struct student* student[6] = { &s1,&s2,&s3,&s4,&s5,&s6 };

struct student* search(int hakbun)
{
	int i;

	for (i = 0; i < 6; i++)
	{
		if (student[i]->hakbun == hakbun) {
			return student[i];
		}
		
	}
	return NULL;
}

void sort()
{
	int i, j, index;
	struct student *temp;

	for ( i = 0; i < 5; i++)
	{
		index = i;
		for ( j = i+1; j < 6; j++)
		{
			if (student[index]->hakbun > student[j]->hakbun) {
				index = j;
			}
		}

		temp = student[i];
		student[i] = student[index];
		student[index] = temp;
	}
}

int main()
{
	struct student *p;

	p = search(2020003);
	if (p==NULL)
		printf("탐색 실패\n\n");
	else
		printf("탐색 성공: %s %d %f\n\n", p->name, p->hakbun, p->grade);

	sort();

	for (int i = 0; i < 6; i++)
	{
		printf("%s %d %f\n", student[i]->name, student[i]->hakbun, student[i]->grade);
	}

	return 0;
}

결과

'C언어 > Homework' 카테고리의 다른 글

[C언어] Card 정렬(숫자 순 - 무늬 순)  (0) 2022.03.21
[C언어] 묻고 더블로 가!  (0) 2022.03.14