注:为方便调试可以将50改为5
#include <stdio.h>
struct a {
int mark;
char name[20];
double grade;
} ls[50];
void sort(struct a *ls,int n );
void output(struct a *ls,int n);
int main(void) {
for(int i=0;i<50;i++){
ls[i].mark=i+1;
printf("请输入学号%d学生的姓名:",i+1);
scanf("%s",ls[i].name);
printf("请输入学号%d学生的成绩:",i+1);
scanf("%lf",&ls[i].grade);
}
sort(ls,50);
printf("成绩从低到高如下:\n");
output(ls,50);
return 0;
}
void sort(struct a *ls,int n ){
int flag=1;
struct a temp;
while(flag){
flag=0;
for(int j=0;j<n-1;j++){
if(ls[j].grade>ls[j+1].grade){
temp=ls[j];
ls[j]=ls[j+1];
ls[j+1]=temp;
flag=1;
}
}
}
}
void output(struct a *ls,int n){
for(int i=0;i<n;i++){
printf("学号:%d\n",ls[i].mark);
printf("姓名:%s\n",ls[i].name);
printf("成绩;%.1f\n",ls[i].grade);
printf("\n");
}
}