【每天例题】蓝桥杯 C语言 回文日期
回文日期
题目




思路分析
1.由于题目要求是找到一定范围日期内的回文日期,所以我们可以采用for遍历日期
2.再调用函数先判断闰年,再进行日期合法判断,最后再进行回文数判断
3.注意,该日期范围包含起始和结束这两个日期,这里会有一个案例挖坑
代码
#include<stdio.h>
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int leapyear(int y)//闰年判定
{
if((y%4==0&&y%100!=0)||(y%400==0))
{
return 1;
}
return 0;
}
int riqihefa(int num)//日期合法
{
int year=num/10000;
int month=num/100%100;
int day=num%100;
days[2]=leapyear(year)?29:28;
if(year>9999||year<1000)
{
return 0;
}
if(month==0||month>12)
{
return 0;
}
if(day==0||day>days[month])
{
return 0;
}
return 1;
}
int huiwenshu(int num)
{
if((num/10000000==num%10)&&(num/1000000%10==num/10%10)&&(num/100000%10==num/100%10)&&(num/10000%10==num/1000%10))
{
return 1;
}
return 0;
}
int main()
{
int date1,date2;
int i;
int count=0;
scanf("%d%d",&date1,&date2);
for(i=date1;i<=date2;i++)
{
if((huiwenshu(i)==1)&&(riqihefa(i)==1))
{
count++;
}
}
printf("%d",count);
return 0;
}
运行结果


浙公网安备 33010602011771号