输出该日期是否为回文日期

编写函数,函数返回一个日期是否为回文日期。回文日期首先应该是合法日期,然后满足年月日构成的8位整数是回文数(左右对称)。要求主函数中输入一个表示日期的8位正整数(例如:20500502表示2050年5月2日),输出该日期是否为回文日期


#include <stdio.h>
int main()
{
    int n,i,sum=0,t;
    scanf("%d",&n);
    t = n;
    while(t)
    {
        sum = sum*10 + t%10;
        t/=10;
    }
    if(sum == n)
        printf("是回文日期");
    else
        printf("不是回文日期");
    return 0;
}

先分解8位正整数为年月日 判断是合法日期,然后判断是回文数
你题目的解答代码如下:

#include <stdio.h>

int fp(int n)
{
    int y,m,d;
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    y = n / 10000;
    m = n / 100 % 100;
    d = n % 100;
    if (y%4==0 && y%100!=0 || y%400==0)
        a[2] = 29;
    return y>=1 && m>=1 && m<=12 && d>=1 && d<=a[m];
}

int hp(int n)
{
    int x,s=0;
    x = n;
    do {
        s = s*10 + x%10;
        x/=10;
    }
    while(x>0);
    return s==n;
}


int main()
{
    int n;
    scanf("%d",&n);
    if(!fp(n))
        printf("不是合法日期");
    else if(hp(n))
        printf("是回文日期");
    else
        printf("不是回文日期");
    return 0;
}

如有帮助,望采纳!谢谢!