【每天例题】蓝桥杯 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;
}

 运行结果

 

posted @ 2023-05-17 15:12  山远尽成云  阅读(110)  评论(0)    收藏  举报