C语言-被调函数输入和排序(提交函数代码)
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;
}