大概这样,输入自己调一下吧
#include <stdio.h>
#include <string.h>
char *months[] = {"Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"};
typedef struct Memo
{
int month;
int day;
char *todo;
} Memo;
char *search(int month)
{
if (month < 1 || month > 12)
return NULL;
return months[month - 1];
}
void swap(Memo *m1, Memo *m2)
{
Memo temp = *m1;
*m1 = *m2;
*m2 = temp;
}
void mysort(Memo m[], int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n; j++)
{
if (m[i].month > m[j].month) //月份大靠后
{
swap(&m[i], &m[j]);
}
else if (m[i].month == m[j].month && m[i].day > m[j].day) //同月天数大靠后
{
swap(&m[i], &m[j]);
}
}
}
}
int main()
{
Memo m[4] = {{1, 27, "Spring Festival"}, {5, 8, "Monther's day"}, {2, 20, "Back to school"}, {11, 10, "English exam"}};
mysort(m, 4);
for (int i = 0; i < 4; i++)
{
char *temp = search(m[i].month);
if (temp != NULL)
{
printf("%s%d-%s\n", temp, m[i].day, m[i].todo);
}
}
return 0;
}
// 输出:
// Jan27-Spring Festival
// Feb20-Back to school
// May8-Monther's day
// Nov10-English exam