/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年8月17日
*版本號:v1.0
*
*問題描述:輸入結構體數組,並根據結構體中的某一數據項對整個結構體數組進行排序
*輸入描述:;
*程序輸出:
*/
#include<stdio.h>
#include<string.h>
struct student
{
int num;
char name[20];
int cpp;
int math;
int english;
int grade;
double average;
};
struct student per[6];
struct student test;
int main()
{
int n,m;
printf("請輸入需要統計信息的學生個數:\n");
scanf("%d",&m);
printf("請依次輸入該%d名學生的信息\n",m);
for(n=0;n<m;n++)
{
printf("請輸入第%d個學生學號:\n",n+1);
scanf("%d",&per[n].num);
printf("請輸入第%d個學生姓名:\n",n+1);
scanf("%s",&per[n].name);
printf("請輸入第%d個學生C語言成績:\n",n+1);
scanf("%d",&per[n].cpp);
printf("請輸入第%d個學生數學成績:\n",n+1);
scanf("%d",&per[n].math);
printf("請輸入第%d個學生英語成績:\n",n+1);
scanf("%d",&per[n].english);
per[n].grade=per[n].math+per[n].cpp+per[n].english;
printf("第%d個學生的總成績是%d:\n",n+1,per[n].grade);
per[n].average=per[n].grade/3;
printf("第%d個學生的平均成績是%f:\n",n+1,per[n].average);
}
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<m-i-1;j++)//此處很重要
{
if(per[j].cpp<per[j+1].cpp)//根據單一數據項,對整個結構體進行排序
{
test=per[j+1];//結構體允許整體賦值
per[j+1]=per[j];
per[j]=test;
}
}
}
printf("該%d名學生按照C語言成績的排序分別是:\n",m);
for(i=0;i<m;i++)
{
printf("c語言第%d名的信息如下:\n",i+1);
printf("%d %s\n",per[i].num,per[i].name);
printf("%d %d %d %d %f\n",per[i].cpp,per[i].math,per[i].english,per[i].grade,per[i].average);
}
return 0;
}
根據結構體數組中某一數據項對結構體數組排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.