藍橋杯基礎練習習題答案思路集錦


T1:閏年問題判斷

問題描述

給定一個年份,判斷這一年是不是閏年。

當以下情況之一滿足時,這一年是閏年:

1. 年份是4的倍數而不是100的倍數;

2. 年份是400的倍數。

其他的年份都不是閏年。

輸入格式
輸入包含一個整數y,表示當前的年份。
輸出格式
輸出一行,如果給定的年份是閏年,則輸出yes,否則輸出no。

說明:當試題指定你輸出一個字符串作為結果(比如本題的yes或者no,你需要嚴格按照試題中給定的大小寫,寫錯大小寫將不得分。

樣例輸入
2013
樣例輸出
no
樣例輸入
2016
樣例輸出
yes
數據規模與約定
1990 <= y <= 2050。
 
官方提示:使用if循環
 
個人分析:嗯,完全是刷自信的題目,唯一需要注意的是在一個if判斷語句中,需要將每一個條件用括號括起來,並且與和非之間也應該有大括號
 
源代碼:

#include<iostream>

using namespace std;

int main() {

    int n;

    cin >> n;

    if ((((n % 4) == 0) && ((n % 100) != 0)) || ((n % 400) == 0)) {

        cout << "yes";

    }

    else{

        cout << "no";

    }

    return 0;

}

 

編譯結果: xcode編譯結果正確,通過藍橋杯官網

 

 

T2  01字串

問題描述

對於長度為5位的一個01串,每一位都可能是0或1,一共有32種可能。它們的前幾個是:

00000

00001

00010

00011

00100

請按從小到大的順序輸出這32種01串。

輸入格式
本試題沒有輸入。
輸出格式
輸出32行,按從小到大的順序每行一個長度為5的01串。
樣例輸出
00000
00001
00010
00011
<以下部分省略>
 
 
分析,第一眼看到這個題目的時候想到的是二進制,從小到大輸出,如果二進制的話,還需要一個從1到32的循環,每一個十進制轉換成二進制輸出
      通過運行。
#include <iostream>
using namespace std;

int bin(int n, int m)
{
    int  i = 0, j;
    bool arr[100];
        while(n > 0)
        {
            arr[i] = bool(n % 2);
            i++;
            n /= 2;
        }
    int pos = m - i;
    if( pos != 0) {
        for(int k = 0; k != pos; k ++  ){
            cout << 0;
        }
    }
    for(j=i-1;j>=0;j--)
        cout << arr[j];
    
    return 0;
}
int main(){
    for (int i = 0; i != 32; i++) {
        bin(i,5);
        cout <<endl;
    }
    return 0;
第二種方法,直接用循環來做。可以發現,從左向右第一位第二位直到第五位只是0和1的變換,所以我們只需要控制一下循環的條件就可以
#include<iostream>
using namespace std;


int main()
{
    int a, b, c, d, e;
    for (a = 0; a < 2; ++a) {
        for (b = 0; b < 2; ++b) {
            for (c = 0; c < 2; ++c) {
                for (d = 0; d < 2; ++d) {
                    for (e = 0; e < 2; ++e) {
                        cout << a << b << c << d << e << endl;
                    }
                }
            }
        }
    }

    return 0;
}

同樣通過運行

T3 字母圖形 

問題描述

利用字母可以組成一些美麗的圖形,下面給出了一個例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。

輸入格式
輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。
輸出格式
輸出n行,每個m個字符,為你的圖形。
樣例輸入
5 7
樣例輸出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
數據規模與約定
1 <= n, m <= 26。
 
分析   網上有種分析,說的是以A為對稱向右拉動,其實我覺得吧,這個規律就在於
   字母的序號與兩個坐標的差的絕對值有關。
      用兩重循環來枚舉所有的坐標,使用絕對值函數計算出坐標的差,再輸出對應的字符。 
   這是藍橋杯官方的提示,簡單的說,就是A坐標的i和j絕對值差為0,B為1  等等等
#include<iostream>
#include<cmath>
using namespace std;
int main() {
    int m, n;
    int x;
    cin >> m >> n;
    for (int i = 0; i != m; i++) {
        for (int j = 0; j != n; j++) {
            x = abs(i - j);
            cout << char(65 + x);
        }
        cout << endl;
    }
    return 0;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM