#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;
}
#include<stdio.h>
struct student{
int num;
char name[8];
float score[3];
float sum;
};
void Sort(struct student *a,int n){
struct student temp;
for(int i=0;i<=n-1;i++){
for(int j=i+1;j<n;j++){
if(a[i].sum<a[j].sum){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main(){
struct student a[5];
float ave[3]={0,0,0};
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\n");
for(int i=0;i<5;i++){
a[i].sum=0;
scanf("%d %s %f %f %f",&a[i].num,a[i].name,&a[i].score[0],&a[i].score[1],&a[i].score[2]);
a[i].sum = a[i].score[0]+a[i].score[1]+a[i].score[2];
ave[0]+=a[i].score[0];
ave[1]+=a[i].score[1];
ave[2]+=a[i].score[2];
}
for(int i=0;i<3;i++){
ave[i]=ave[i]/5;
printf("第%d科的平均分:%.2f\n",i+1,ave[i]);
}
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");
for(int i=0;i<5;i++){
printf("%d\t%s\t%.0f\t%.0f\t%.0f\n",a[i].num,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2]);
}
Sort(a,5);
printf("总成绩最高:\n");
printf("%d\t%s\t%.0f\t%.0f\t%.0f\n",a[0].num,a[0].name,a[0].score[0],a[0].score[1],a[0].score[2]);
printf("排序后输出\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");
for(int i=0;i<5;i++){
printf("%d\t%s\t%.0f\t%.0f\t%.0f\n",a[i].num,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2]);
}
return 0;
}