顺子日期
题目
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。
例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。
小明想知道在整个 2022 年份中,一共有多少个顺子日期?
题目要求
1.顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期
2.题目要求年份为2022年
思路分析
1.2022年为平年,可以使用for循环,将2022年日期进行日期判断
2.进行日期判断后再进行顺子日期判断,可以采用数组的形式提取日期的数位,再判断日期
代码
#include
int shunzi( int n) //判断是否存在顺子
{
int m=n;
int i=0,j;
int a[8];
int x=0;
while (m!=0) //拆分数位
{
a[i]=m%10;
m/=10;
i++;
} //此时a[i]为原数字的逆序数
for (j=0;j<+7;j++)
{
if (a[j+1]-a[j]==-1&&a[j+2]-a[j+1]==-1)
{
return 1;
x=1;
break ;
}
else
{
continue ;
}
}
if (x==0) //没有顺子数
{
return 0;
}
}
int main()
{
int i;
int day,month,year;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int count=0;
for (i=20220101;i<=20221231;i++)
{
year=i/10000;
month=i%10000/100;
day=i%100;
if (day<=days[month]) //判断日期合法性
{
if (shunzi(i)==1)
{
count++;
}
}
}
printf( "%d" ,count);
return 0;
}