您的位置:首页 > 其它

结构体排序

2020-04-05 12:16 183 查看

定义学生信息结构体和结构体数组,包括学号、两门百分制成绩和姓名;键盘输入

学生不多于 30 人的信息,以输入成绩为负数或大于 100 作为输入结束;按照学号和平均成绩排序,并输出学生信息

//输入学生分数信息,学号排序和平均分排序后输出

#include <stdio.h>

struct student{
long num;
char name[20];
float score[2];
float aver;
}stu[],temp;

int main(void){
int i,j,k,n;
printf("Enter score1 score2 num name\n");
for(i=0;;i++){		//当输入的分数1小于0或大于100时结束输入
scanf("%f %f %ld %s",&stu[i].score[0],&stu[i].score[1],&stu[i].num,stu[i].name);
if(stu[i].score[0]<0 || stu[i].score[0]>100) break;
stu[i].aver=(stu[i].score[0] + stu[i].score[1]) / 2.0;

}

for(j=1;j<i-1;j++){                 //学号冒泡法排序

for(k=0;k<i-j;k++){
if(stu[k].num > stu[k+1].num){
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
printf("after num\n");              //输出
printf("num\tname\t\t\tscore1\tscore\taver\n");
for(n=0;n<i;n++)
printf("%ld\t%s\t%.1f\t\t%.1f\t\t%.1f\n",stu
.num, stu
.name, stu
.score[0], stu
.score[1],stu
.aver);

for(j=1;j<i-1;j++){                 //平均分冒泡法排序

for(k=0;k<i-j;k++){
if(stu[k].aver > stu[k+1].aver){
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
printf("after aver\n");
printf("num\tname\t\tscore1\tscore\taver\n");

for(n=i-1;n>=0;n--)
printf("%ld\t%s\t%.1f\t\t%.1f\t\t%.1f\n",stu
.num, stu
.name, stu
.score[0], stu
.score[1],stu
.aver);
return 0;
}


  • 点赞 3
  • 收藏
  • 分享
  • 文章举报
Criya713 发布了1 篇原创文章 · 获赞 1 · 访问量 280 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: