<center id="qkqgy"><optgroup id="qkqgy"></optgroup></center>
  • <menu id="qkqgy"></menu>
    <nav id="qkqgy"></nav>
    <xmp id="qkqgy"><nav id="qkqgy"></nav>
  • <xmp id="qkqgy"><menu id="qkqgy"></menu>
    <menu id="qkqgy"><menu id="qkqgy"></menu></menu>
    <tt id="qkqgy"><tt id="qkqgy"></tt></tt>

  • <>藍橋杯-時間模擬

    引言:時間模擬,是藍橋杯最常見的題型,我愿意把他稱作小白和入門畫的界限,接下來就讓我來帶大家入門把!

    <>一、模板
    # include<bits/stdc++.h> // 萬能頭文件 using namespace std; int a[13] = {0, 31, 28,
    31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//
    12個月份,存13個數是為了,讓下標1,指向的就是一月,放棄下標0,容易理解點,你喜歡也可以存12個數,下標從0~11 int main(){ int year
    = 2020, month = 1, day = 1;//初始年、月日 while(1){ if(year == 2025 && month == 1 &&
    day== 1){ break; } cout << year << '\t' << month << '\t' << day << endl;
    //輸出年、月、日 day++; if(month == 2 && (year % 4 == 0 && year % 100 !=0) || year %
    400 == 0){//是二月且是閏年 if(day > a[month] + 1){ day =1; month++; } } else if(day > a
    [month]){ day =1; month++; } if(month > 12){ month = 1; year++; } } }
    這里的結果,可自行打印

    套路整理:

    * 開辟一個數組存12個月份的天數
    這里我的記憶方式是,1、3、5、7、 、8、10、12 前奇數后偶數,二月是28天

    *
    接下來是就是while循環里的操作了,

    * 結束條件
    * 月份進位——每四年一輪的閏年,二月會多一天
    閏年的判斷,能被4整除,但是不能被100整除,或者能被400整除就是閏年了,
    * 年份進位
    <>二、小試牛刀

    藍橋杯2018c/c++b組——第幾天

    題目:

    2000年的1月1日,是那一年的第1天。
    那么,2000年的5月4日,是那一年的第幾天?

    直接套模板結束!
    #include <bits/stdc++.h> using namespace std; int a[13] = {0, 31, 28, 31, 30,
    31, 30, 31, 31, 30, 31, 30, 31}; int main(){ int year = 2020, month = 1, day =
    1, ans = 0; while (1){ ans++; if (year == 2020 && month == 5 && day == 4){
    break; } if (((year % 4 == 0 && year % 100 != 0) || year % 400) && month == 2){
    if (day > a[month] + 1){ day = 1; month++; } } else { if(day > a[month]){ day =
    1; month++; } } if (month > 12){ month = 1; year++; } // cout << year << '\t'
    << month << '\t' << day << endl; day++; } cout << ans; }
    <>三、進階實驗

    引言:有時我們需要對年月日,進行一并處理,但是問題就是,我們的變量是year、month、day平常的日期可以表達,但是有些特殊格式卻表達不出,舉個栗子:20200101,用year、month、day表示是202011,會有差別,那么接下來就來進階學會!

    我們用c語言中的函數來進行

    *
    頭文件#include <stdio.h>

    *
    內置函數:sprintf

    標準格式:int sprintf(char *str, const char *format, …)

    <>舉個栗子

    藍橋杯2022c/c++b組——順子日期

    題目:

    小明特別喜歡順子。順子指的就是連續的三個數字:123、456
    等。順子日期指的就是在日期的yyyymmdd表示法中,存在任意連續的三位數是一個順子的日期。例如20220123就是一個順子日期,因為它出現了一個順子:123;而20221023則不是一個順子日期,它一個順子也沒有。小明想知道在整個2022年份中,一共有多少個順子日期。

    題解:
    #include <bits/stdc++.h> using namespace std; int a[13] = {0, 31, 28, 31, 30,
    31, 30, 31, 31, 30, 31, 30, 31}; char k[10]; bool check(char k[]){ int l = 8;
    for (int i = 0; i < l-2; i++){ if (k[i] == k[i + 1] - 1 && k[i + 1] == k[i + 2]
    - 1){ // cout << k << '\t' << k[i] << k[i+1] << k[i + 2] << endl; return true;
    } } return false; } int main(){ int year = 2020, month = 1, day = 1, ans = 0;
    while(1){ sprintf(k, "%04d%02d%02d", year, month, day);//%02d意思是不足4位補0 //舉個栗子:3
    他的形式是03的形式保存到字符數組k中,如果是126的話,還是以126的形式保存到字符數組中 if(check(k)){ ans++; } cout <<
    year <<" "<< month <<" "<< day << endl; if(year == 2025 && month == 1 && day ==
    1){ break; } day++; if(month == 2 && ((year % 4 == 0 && year % 100 != 0) ||
    year % 400 == 0)){ if (day > a[month] + 1){ day = 1; month++; } } else if(day >
    a[month]){ day = 1; month++; } if(month > 12){ month = 1; year++; } } cout <<
    ans; }
    以上就是本次全部內容,如有不懂請留言!后續如果各位喜歡本類型的題,我也會出雙指針與日期結合的題

    技術
    下載桌面版
    GitHub
    百度網盤(提取碼:draw)
    Gitee
    云服務器優惠
    阿里云優惠券
    騰訊云優惠券
    華為云優惠券
    站點信息
    問題反饋
    郵箱:ixiaoyang8@qq.com
    QQ群:766591547
    關注微信
    巨胸美乳无码人妻视频