C言語は構造を使用して結果をソートします

タイトル

     学生の情報(学生番号、氏名、学年など)がn個あるので、学生の情報を高い順に出力する関数を記述します。

入力フォーマット:

正の整数n(n <50)を入力し、下のn行にn人の学生の情報(学生番号、名前、成績など)を入力します。

出力フォーマット:

学生ID、名前、成績など、学生の情報を高から低に並べて出力します。

入力例:

ここに入力のセットがあります。たとえば、次のとおりです。

3
101張78
102王91
103李85

出力例:

102王91
103李85
101張78


#include<stdio.h>
struct Stu
{
	int num;
	char name[50];
	int score;
};


int main()
{
	struct Stu s[50], * a[50];
	struct Stu* t, ** p;
	int i,j;
	int n;
	scanf("%d", &n);
	for (i = 0; i < n; ++i)
		scanf("%d%s%d", &s[i].num, s[i].name, &s[i].score);
	for (i = 0; i < n; ++i)
		a[i] = &s[i];
	for (i = 0; i < n-1; ++i)
	{
		p = a + i;
		for (j = i + 1; j < n; ++j)
			if ((*p)->score < a[j]->score)
				p = a + j;
		if (p != a + j)
		{
			t = *p;
			*p = a[i];
			a[i] = t;
		}
	}
	for (i = 0; i < n; ++i)
		printf("%d %s %d\n", a[i]->num, a[i]->name, a[i]->score);
	return 0;
}
71件の元の記事を公開 いいね3 訪問4044

おすすめ

転載: blog.csdn.net/zouchengzhi1021/article/details/105442144