题目描述
新生报到,OJ 实验室新来了 7 名同学,为了安排一周的宿舍值日情况,决定按照年龄从小到大的顺序依次安排到周一至周日。
请完善如下程序:
#include <stdio.h>
#include <stdlib.h>
struct studentInfo
{
int num; //学生学号
char name[20]; //学生姓名,默认不超过20个字符
int year; //学生出生年份
int month; //学生出生月份
int day; //学生出生天
};
int main()
{
int i,j,k,tmp1,tmp2; //i,j迭代变量
char *days[7] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
struct studentInfo stu[7],tmpstu; //学生信息
for( i = 0 ; i < 7 ; i++)
scanf("%d %s %d %d %d",&stu[i].num,stu[i].name,&stu[i].year,&stu[i].month,&stu[i].day);
/*******在下面填写代码***********/
/*******在上面填写代码***********/
for( i = 0 ; i < 7 ; i++) //输出排好序的stu信息
printf("%s %d %s\n",days[i],stu[i].num,stu[i].name);
return 0;
}
输入
7 名同学的学号,姓名,出生年月日(任意两个学生出生日期不同)
输出
安排好的一周的值日表,每行中的数据以空格隔开。
输入输出样例
样例输入 #1
复制
1224 lushaoxiao 1997 12 24
3132 wangxu 1997 11 10
3128 mengyuan 1997 10 1
3129 yushisheng 1997 8 12
1147 chenjueyu 1998 3 24
6125 lijianian 1998 6 14
3220 zhangliying 1997 7 18
样例输出 #1
复制
Monday 6125 lijianian
Tuesday 1147 chenjueyu
Wednesday 1224 lushaoxiao
Thursday 3132 wangxu
Friday 3128 mengyuan
Saturday 3129 yushisheng
Sunday 3220 zhangliying
【代码】
for(i=0;i<6;i++)
{
for(j=0;j<6-i;j++)
{
if(stu[j].year<stu[j+1].year)
{
tmpstu= stu[j];
stu[j]=stu[j+1];
stu[j+1]=tmpstu;
}
if(stu[j].year==stu[j+1].year)
{
if(stu[j].month<stu[j+1].month)
{
tmpstu= stu[j];
stu[j]=stu[j+1];
stu[j+1]=tmpstu;
}
if(stu[j].month==stu[j+1].month)
{
if(stu[j].day<stu[j+1].day)
{
tmpstu= stu[j];
stu[j]=stu[j+1];
stu[j+1]=tmpstu;
}
}
}
}
}