本关任务:定义一个日期结构体类型(包括年、月、日),实现输入一批日期,将日期按从大到小的顺序输出,要求各功能模块都用函数实现。
代码如下:
#include<stdio.h>
#define N 10
typedef struct date
{
int year;
int month;
int day;
}DATE;
void inputarr(DATE s[ ], int n);
void outputarr(DATE s[],int n);
int compdate(DATE a, DATE b);
void swap(DATE *p1,DATE *p2);
void sortdate(DATE s[],int n);
int main()
{
DATE today[N];
int n;
scanf("%d",&n);
inputarr(today,n);
sortdate(today,n);
outputarr(today,n);
return 0;
}
/********** Begin **********/
void inputarr(DATE s[ ], int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d %d %d",&s[i].year,&s[i].month,&s[i].day);}
void sortdate(DATE s[],int n)
{ int i,j;
DATE b[n];
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{if(s[i].year>s[j].year)
{b[i]=s[i];
s[i]=s[j];
s[j]=b[i];
continue;}
if(s[i].year<s[j].year)
continue;
if(s[i].year=s[j].year)
{if(s[i].month>s[j].month)
{b[i]=s[i];
s[i]=s[j];
s[j]=b[i];
continue;}
if(s[i].month<s[j].month)
continue;
if(s[i].month=s[j].month)
{
if(s[i].day>s[j].day)
{b[i]=s[i];
s[i]=s[j];
s[j]=b[i];
continue;}
if(s[i].day<s[j].day)
continue;
if(s[i].day=s[j].day)
continue;
}
}}
}
void outputarr(DATE s[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d年%d月%d日\n",s[i].year,s[i].month,s[i].day);}
/********** End **********/