题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/7a2f7d304d9e43b1bb2a6e72ed65bf51

#include <stdio.h>
#include <string.h>
typedef  struct student{
    char name[100];
    int age;
    int score;
}student;
int compare(char a[],char b[]){
    int i,j;
    for(i=0;a[i]!='\0';i++){
    }
    for(j=0;a[j]!='\0';j++){}
    int t=0,p=0;
    while(a[t]!='\0'&&b[t]!='\0'){
        if(a[t]>b[t])return 1;
        if(a[t]<b[t])return 0;
        t++;
    }
    if(a[t]=='\0')return 0;
    else return 1;
}
void sort(student st[],int n){
     for(int i=0;i<n;i++){
        for(int j=0;j<n-i-1;j++){
            if(st[j].age>st[j+1].age){
                student a=st[j];
                st[j]=st[j+1];
                st[j+1]=a;
            }
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n-i-1;j++){
            int temp=compare(st[j].name, st[j+1].name);
            if(temp==1){
                student a=st[j];
                st[j]=st[j+1];
                st[j+1]=a;
            }
            }
        }
        
    for(int i=0;i<n;i++){
        for(int j=0;j<n-i-1;j++){
            if(st[j].score>st[j+1].score){
                student a=st[j];
                st[j]=st[j+1];
                st[j+1]=a;
            }
        }
    }
   
    
}
void stequal(char a[],char b[]){
    int i=0;
    while(a[i]!='\0'){
        i++;
    }
    for(int j=0;j<i+1;j++){
        b[j]=a[j];
    }
}
int main() {
    int n=0;
    scanf("%d",&n);
    student stu[n];
    int age,score;
    char name[100];
    int len=0;
    for(int len=0;len<n;len++){
        scanf("%s %d %d",stu[len].name,&stu[len].age,&stu[len].score);
    }
    sort(stu,n);
    for(int i=0;i<n;i++){
        printf("%s %d %d\n",stu[i].name,stu[i].age,stu[i].score);
        
    }
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务