C语言结构体排序

题目记不到了,我传一个留个源码:

#include
#include
struct student{
    char s[1000];
    int n;
};
    struct student a[10000];
void quicksort(int left,int right){
    int i,j,k;
    struct student temp;
    if(left>=right)
    return;
    i=left;
    j=right;
    k=a[left].n;
    while(j>i){
        while(a[j].n>=k&&j>i){
        if(a[j].n==k){
        if(strcmp(a[j].s,a[left].s)<=0)
        j--;else
        break;}
        else
        j--    ;
        }
        while(a[i].n<=k&&i         if(a[i].n==k){
        if(strcmp(a[i].s,a[left].s)>=0)
        i++;else
        break;}
        else
        i++;}
        temp=a[j];
        a[j]=a[i];
        a[i]=temp;
    }
        temp=a[j];
        a[j]=a[left];
        a[left]=temp;
        quicksort(left,i-1);
        quicksort(i+1,right);
}
int main(){
    int num;
    char o[1000];
    scanf("%d",&num);
    getchar();
    for(int i=1;i<=num;i++){
        gets(a[i].s);
        char *u=a[i].s;
        while(*u<'0'||*u>'9')
        u++;
        *(u-1)='\0';
        a[i].n=0;
        while(*u!='\0'){
            a[i].n=(*u-'0')+a[i].n*10;
            u++;
        }}
        quicksort(1,num);
        for(int i=num;i>=1;i--)
        {
            puts(a[i].s);
            printf("%d\n\n",a[i].n);
        }
    return 0;
}
//第二题:结构数组

#include
#include
#include
#include
struct student
{
    char name[20];
    char number[30];
    int score[5];
    double average;
    int total;
};
int main(void)
{
    struct student stu[100];
    int count;
    int n;
    scanf("%d", &n); getchar();
    for (count = 0; count < n; count++)
    {
        int sum=0;
        gets(stu[count].name); 
        gets(stu[count].number); 
        for (int i = 0; i < 5; i++)
        {
            scanf("%d", &stu[count].score[i]); getchar();
            sum += stu[count].score[i];
            stu[count].total = sum;
        }
        stu[count].average = (double)sum / 5;
    }
    for (count = 0; count < n; count++)
    {
        printf("Name:%s\n",stu[count].name);
        printf("ID:%s\n",stu[count].number);
        printf("Score:");
        for (int i = 0; i < 5; i++)
        {
            printf("%d ", stu[count].score[i]);
        }
        printf("\n");
        printf("average:%.2lf total:%d\n",stu[count].average,stu[count].total);
        printf("\n");
    }
    system("pause");
    return 0;
}

你可能感兴趣的:(C语言)