蓝桥杯历年真题练习1 —— 日期统计(填空题)

问题描述:


解答:

采用暴力枚举

#include <stdio.h>

int main()
{
    int arry[100] = {
        5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,
        8,6,1,8,3,0,3,7,9,2,7,0,5,8,8,5,7,0,9,9,1,9,4,4,6,8,6,3,3,8,5,
        1,6,3,4,6,7,0,7,8,2,7,6,8,9,5,6,5,6,1,4,0,1,0,0,9,4,8,0,9,1,2,
        8,5,0,2,5,3,3
    };
    int daysInMonth[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    int ans = 0;

    for (int mouth = 1;mouth <= 12;++mouth)
    {
        for (int day = 1;day <= daysInMonth[mouth];++day)
        {
            int dataSeq[8] = { 2,0,2,3,mouth / 10,mouth % 10,day / 10,day % 10 };
            int k = 0;

            for (int i = 0;i < 100;++i)
            {
                if (arry[i] == dataSeq[k])
                {
                    ++k;
                    if (k == 8)
                    {
                        ans++;
                        break;
                    }
                }
            }
        }
    }

    printf("%d\n", ans);
    return 0;
};



运行结果:


要点解析:

1. 大批量数值增添英文逗号“,”分割创建数组

int arry[100] = {
        5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,
        8,6,1,8,3,0,3,7,9,2,7,0,5,8,8,5,7,0,9,9,1,9,4,4,6,8,6,3,3,8,5,
        1,6,3,4,6,7,0,7,8,2,7,6,8,9,5,6,5,6,1,4,0,1,0,0,9,4,8,0,9,1,2,
        8,5,0,2,5,3,3
    };

 新建excel表格 —— copy全部数字到任意单元格 —— “数据”-“分列”-“分隔符号”-“空格”

插入函数“TEXTJION” —— 选中已完成分列的数字行 —— 分隔符号“,”即可 

2. 由题数据为2023年,创建该年每月最大日期数为数组,注意为方便解答,数组1~12为月份最大日期数,0随即设为‘0’
int daysInMonth[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

3. 依次进行8个数字的比对,得出的月份、日期有大于等于10的情况,统一进行取整、求余得到8个符合题意的8个数字,注意“break”必须要加,否则无法正确退出循环
int ans = 0;

for (int mouth = 1;mouth <= 12;++mouth)
{
    for (int day = 1;day <= daysInMonth[mouth];++day)
    {
        int dataSeq[8] = { 2,0,2,3,mouth / 10,mouth % 10,day / 10,day % 10 };
        int k = 0;

        for (int i = 0;i < 100;++i)
        {
            if (arry[i] == dataSeq[k])
            {
                ++k;
                if (k == 8)
                {
                    ans++;
                    break;
                }
            }
        }
    }
}

 * 欢迎留言讨论~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值