[每天例题]蓝桥杯 C语言 顺子日期

发布时间 2023-04-26 19:19:19作者: 山远尽成云

顺子日期

题目

https://www.lanqiao.cn/problems/2096/learning/?page=3&first_category_id=1&sort=students_count&difficulty=30

 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小明特别喜欢顺子。顺子指的就是连续的三个数字: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;
 }