这两个题正确的应该是什么

第一题
日期之间的天数差

定义一个日期结构体变量(包括年,月,日)。写函数计算两个日期之间的天数差?注意闰年问题。

样例输入#1:

2020 12 20

2020 12 23

样例输出#1:

3

样例输入#2:

2020 12 20

2020 12 19

样例输出#2:

-1

样例输入#2:

2020 12 20

2000 11 19

样例输出#2:

-7336

第二题
点排序

定义一结构体表示点坐标,输入N个点的坐标,存放在结构体数组中(数组用malloc函数创建),对数组中的点按照离原点距离由小到大的顺序排序,输出排序后的点坐标。

输入的第一行表示点的个数N,后面的N行每行两个整数,表示一个点的x、y坐标。输出排序后的坐标。

样例输入:

3

3 3

1 1

2 2

样例输出:

(1,1)(2,2)(3,3)


#include <stdio.h>

int main(void)
{
    struct datetime
    {
        int year;
        int month;
        int day;
    };
    datetime d1, d2;
    scanf("%d %d %d", &(d1.year), &(d1.month), &(d1.day));
    scanf("%d %d %d", &(d2.year), &(d2.month), &(d2.day));
    int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int k,count=0;
    if (d1.year<d2.year ||(d1.year==d2.year && d1.month<d2.month)||(d1.year==d2.year && d1.month==d2.month && d1.day<d2.day))
    {
        k = 1;
    }
    else
    {
        k = -1;
    }
    while (d1.year != d2.year || d1.month != d2.month || d1.day != d2.day)
    {
        count += k;
        d1.day+=k;
        if ((d1.year%4==0 && d1.year%100!=0)|| d1.year%400==0)
        {
            days[1] = 29;
        }
        else
        {
            days[1] = 28;
        }
        if (d1.day>days[d1.month-1])
        {
            d1.day = 1;
            d1.month++;
            if (d1.month>12)
            {
                d1.month = 1;
                d1.year++;
            }
        }
        else if (d1.day<1)
        {
            d1.month--;
            if (d1.month<1)
            {
                d1.month = 12;
                d1.year--;
            }
            d1.day = days[d1.month-1];
        }
    }
    printf("%d\n", count);
}