回文日期
题目
思路分析
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; }
运行结果
标签:10,return,int,31,C语言,蓝桥,日期,num,例题 From: https://www.cnblogs.com/hcrzhi/p/17399872.html