1. 程式人生 > 其它 >對學生的資訊按成績進行排序輸出

對學生的資訊按成績進行排序輸出

對50個學生的記錄(包括學生的姓名和成績),組成記錄陣列,用簡單選擇法按成績從高到低的次序輸出(每行輸出5個)。

#include<stdio.h>
#define N 10
struct student 
{
	char name[10];
	int score[2];
}information[N];              //定義一個結構體資料型別,存放學生的姓名和成績

void SelectionSort(student *a,int n)
{
	int i,j,k,m;
	student temp;
	for(i=0;i<n-1;i++)
	{
		for(j=i;j<
n;j++) { if(*a[j].score>*a[i].score) { temp=information[i]; information[i]=information[j]; information[j]=temp; } } } for(i=0;i<N;i++) { for(i=0;i<N;i++) {printf("%s:%d ",information[i].name,*information[i].score); if(!((
i+1)%5)) //控制每行輸出5個數據 printf("\n");} } } //在函式中根據學生的成績從高到低排序輸出 void main() { int i; FILE *fp; fp=fopen("新建文字文件.txt","r"); //以只讀方式開啟存放學生資訊的檔案 for(i=0;i<N;i++) { fscanf(fp,"%s%d",information[i].name,information[i].score); } //將資料存放在陣列中
fclose(fp); //關閉檔案 printf("原始資料為:\n"); for(i=0;i<N;i++) { printf("%s:%d ",information[i].name,*information[i].score); if(!((i+1)%5)) //控制每行輸出5個數據 printf("\n"); } printf("\n"); //輸出原始資料 printf("排序結果為:\n"); SelectionSort(information,N); }

檔案中的學生記錄:
在這裡插入圖片描述
程式執行結果截圖:
在這裡插入圖片描述
相比於在程式執行後再輸入資料,這種方式可能更好,可以在得出結果後發現有錯誤時在檔案中只修改某一資料,不用重新輸入全部資料。
如果需要新增學生資訊,修改資料數量、每行輸出個數、排序方式,修改相應資料型別、引數即可。
如有不足,歡迎指出交流。