这个实在是不懂 求看看

img

大概这样,输入自己调一下吧

#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