编写函数,函数返回一个日期是否为回文日期。回文日期首先应该是合法日期,然后满足年月日构成的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;
}
如有帮助,望采纳!谢谢!