對學生的資訊按成績進行排序輸出
阿新 • • 發佈:2020-12-25
對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);
}
檔案中的學生記錄:
程式執行結果截圖:
相比於在程式執行後再輸入資料,這種方式可能更好,可以在得出結果後發現有錯誤時在檔案中只修改某一資料,不用重新輸入全部資料。
如果需要新增學生資訊,修改資料數量、每行輸出個數、排序方式,修改相應資料型別、引數即可。
如有不足,歡迎指出交流。