1 #include <stdio.h>
2
3 typedef struct date{
4 int year;
5 int month;
6 int day;
7 }da;
8
9 #define swap(x,y) {da d=x;x=y;y=d;}
10 void sorty(da *d,int cot)
11 {
12 int i,j;
13 da t;
14 for(i=0;i<cot;i++)
15 for(j=i+1;j<cot;j++)
16 if(d[i].year<d[j].year){
17 //printf("%d\n",sizeof(d[i])); 12是一个结构体类型
18 da d1 = d[i];da d2 = d[j];
19 swap(d1,d2)
20 //swap(d[i],d[j])
21 }
22 }
23
24 void sortm(da* d,int cot)
25 {
26 int i,j;
27 da t;
28 for(i=0;i<cot;i++)
29 for(j=i+1;j<cot;j++)
30 if(d[i].month<d[j].month){
31 t = d[i];
32 d[i] = d[j];
33 d[j] = t;
34 }
35}
36
37 void sort(da d[5],int cot,void (*s)(da*,int)){
38 (*s)(d,cot);
39 }
40 int main()
41 {
42 da d[5];
43 int year;
44 int day;
45 int month;
46 int i;
47 for(i=0;i<5;i++){
48 printf("请输入第%d个日期\n",i+1);
49 scanf("%d %d %d",&year,&month,&day);
50 //scanf("%*[^\n]%*c");
51 d[i].year = year;
52 d[i].month = month;
53 d[i].day = day;
54}
55 for(i=0;i<5;i++)
56 printf("%d %d %d\n",d[i].year,d[i].month,d[i].day);
57
58 sort(d,5,sorty);
59 printf("按照年排序之后:\n");
60 for(i=0;i<5;i++)
61 printf("%d %d %d\n",d[i].year,d[i].month,d[i].day);
62
63 sort(d,5,sortm);
64 printf("按照月排序之后:\n");
65 for(i=0;i<5;i++)
66 printf("%d %d %d\n",d[i].year,d[i].month,d[i].day);
67 return 1;
68 }
附上源码