C语言-被调函数输入和排序(提交函数代码)

16

Description

写两个函数:

1、一个函数中输入10个学生的数据,每个人都包括三项基本资料:学号,生日,分数(整数)。

2、另一个函数可以按照分数由高到低的顺序将每个人的资料排列输出。

主函数已在后台,提交时会自动添加在你的代码之后。

主函数如下:

int main()

{

       struct student s[10];

       input(s,10);

       sort(s,10);

       return 0;

}

请编写所需代码。

Input

10个学生的数据,每人一行

Output

输出排序后的数据,每人一行

sample input :::

5 1990 10 1 86

3 1992 1 5 90

8 1991 3 1 70

9 1990 5 5 65

1 1991 6 22 89

4 1992 12 31 77

2 1990 1 1 87

6 1989 6 6 92

10 1990 8 1 88

7 1992 3 9 82

sample output:::

6,1989/6/6,92

3,1992/1/5,90

1,1991/6/22,89

10,1990/8/1,88

2,1990/1/1,87

5,1990/10/1,86

7,1992/3/9,82

4,1992/12/31,77

8,1991/3/1,70

9,1990/5/5,65

#include <stdio.h>
#include <stdlib.h>
struct student{
    int number;
    int year;
    int month;
    int day;
    int grade;
};
void input(struct student *s,int n){
    int i;
    for(i=0;i<n;i++){
        scanf("%d %d %d %d %d",&s->number,&s->year,&s->month,&s->day,&s->grade);
        s++;
    }
}
void sort(struct student *s,int n){
    int j,i,t1=0,t2=0,t3=0,t4=0,t5=0;
    for(i=0;i<=n-2;i++){
        for(j=0;j<=n-2-i;j++){
            if(s[j].grade<s[j+1].grade){
               t1=s[j].number;
               s[j].number = s[j+1].number;
               s[j+1].number=t1;

               t2=s[j].year;
               s[j].year = s[j+1].year;
               s[j+1].year=t2;

               t3=s[j].month;
               s[j].month = s[j+1].month;
               s[j+1].month=t3;

               t4=s[j].day;
               s[j].day = s[j+1].day;
               s[j+1].day=t4;

               t5=s[j].grade;
               s[j].grade = s[j+1].grade;
               s[j+1].grade=t5;

            }
        }
    }

    for(i=0;i<n;i++){
        printf("%d,%d/%d/%d,%d\n",s->number,s->year,s->month,s->day,s->grade);
        s++;
    }
}
int main()
{
    struct student s[10];
       input(s,10);
       sort(s,10);
       return 0;
}