C語言 | 按成績高低輸出學生資訊
阿新 • • 發佈:2020-12-22
例39:有n個學生的資訊(包括學號、姓名、成績),C語言程式設計實現按照成績的高低順序輸出學生的資訊。
解題思路:用結構體陣列存放n個學生資訊,採用選擇法對各元素進行排序,在定義結構體陣列時進行初始化,為清晰起見,將每個學生的資訊用一對花括號包起來。
原始碼演示:
#include<stdio.h>//標頭檔案
struct student //學生結構體
{
int num; //學號
char name[20]; //姓名
float score; //成績
} ;
int main()//主函式
{
//定義結構體變數且賦值
struct student stu[5]={{10010,"Tom",78},{10011,"Jon",98.5},{10012,"Lisi",100},{10013,"zhangsan",99},{10014,"wangwu",10}};
struct student t;
int i,j,k;//定義整型變數
printf("成績由大到小排序:\n");//提示語句
for(i=0;i<4;i++)//外層for迴圈
{
k=i;//把i的值賦給k
for(j=i+1;j< 5;j++)//內層for迴圈
{
if(stu[j].score>stu[k].score)//挑出分數高的
{
k=j;//把相應的j賦值給k
}
}
t=stu[k]; //把成績高的放到前面
stu[k]=stu[i];
stu[i]=t;
}
for(i=0;i<5;i++)//迴圈輸出5個人的成績
{
printf("%d,%10s,%6.2f分\n",stu[i].num,stu[i].name,stu[i].score);//輸出結果
}
return 0;//主函式返回值為0
}
編譯執行結果如下:
成績由大到小排序:
10012, Lisi,100.00分
10013, zhangsan, 99.00分
10011, Jon, 98.50分
10010, Tom, 78.00分
10014, wangwu, 10.00分
--------------------------------
Process exited after 0.05481 seconds with return value 0
請按任意鍵繼續. . .
C語言按成績高低輸出學生資訊
更多案例可以go公眾號:C語言入門到精通