题解 | #成绩排序#
成绩排序
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;
}
查看15道真题和解析