你想问什么?
#include<stdio.h>
struct student{
int num;
char name[8];
double score[3];
};
struct arrayst{
struct student stu;
double nums;
};
void input(struct arrayst *a,int n){
printf("NUM\tNAME\tSCORE1\tSCORE2\tSCORE3\n");
for(int i=0;i<n;i++){
scanf("%d %s %lf %lf %lf",&a[i].stu.num,a[i].stu.name,&a[i].stu.score[0],&a[i].stu.score[1],&a[i].stu.score[2]);
a[i].nums =(a[i].stu.score[0]+a[i].stu.score[1]+a[i].stu.score[2])/3;
}
}
void output(struct arrayst *a,int n){
printf("NUM\tNAME\tSCORE1\tSCORE2\tSCORE3\tAVERAGE\n");
for(int i=0;i<n;i++){
printf("%d\t%s\t%.0lf\t%.0lf\t%.0lf\t%.6g\t\n",a[i].stu.num,a[i].stu.name,a[i].stu.score[0],a[i].stu.score[1],a[i].stu.score[2],a[i].nums);
}
}
void scoresort(struct arrayst *a,int n){
struct arrayst temp;
for(int i=0;i<=n-1;i++){
for(int j=i+1;j<n;j++){
if(a[i].nums<a[j].nums){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main(){
struct arrayst a[100];
int n;
while(1){
printf("Please input a number between 5-100:");
scanf("%d",&n);
if(n>=5&&n<=100)
break;
}
input(a,n);
printf("\nBefore Sort:\n");
output(a,n);
scoresort(a,n);
printf("\nAfter Sort:\n");
output(a,n);
return 0;
}
%g 有小数部分输出小数 无小数部分就不会输出 %.0ld 控制double型不输出小数部分 \t输出格式限定 控制对齐
主函数下次最好给一下 有帮助的话记得采纳一下