藍橋杯練習 2 26

2021-10-20 10:48:12 字數 3355 閱讀 6142

字串對比

思路:此題主要考察c++中字串的一些應用

c++中可以直接定義乙個空字串,然後直接讀入

string s1;

cin >> s1;

也可以用getline()讀入

接受乙個字串,可以接收空格並輸出

string str;

getline

(cin,str)

;

都需包含「#include」

獲得字串長度

len = s1.

size()

;len = s1.

length()

;

倆種方法

然後根據題目要求運用字串長度函式和if語句,注意簡單的題目一定要細心

**:

#include

#include

using

namespace std;

intmain()

else

else}}

cout << flag << endl;

}return0;

}

常用stl標準模板庫

動態陣列-vector

c++中 vector的實現在乙個 標頭檔案中

構造乙個動態陣列

#include

using

namespace std;

intmain()

這樣我們定義了乙個名為 vec 的儲存t (如int float double)型別資料的動態陣列,初始的時候 vec 是空的。

陣列插入新的元素

c++通過 push_back( ),只能在末端加入

#include

using

namespace std;

intmain()

獲取長度並且訪問元素

c++ 中通過 size() 方法獲取vector的長度,跟陣列一樣通過 操作直接訪問 vector 中的元素,剛開始第一位的陣列元素下標為0.

#include

using

namespace std;

intmain()

return0;

}

修改元素

只需用 = 給它賦值就好了,但一定不能訪問沒有開到的下標位置。

vec[1]

=3;// [1, 3, 3]

刪除元素

和插入一樣,只能在動態陣列的末端進行操作,c++通過 pop_back( )方法

清空c++呼叫clear( )方法就可以清空 vector,但只是清空陣列,不會清空開記憶體,清空記憶體如下:

// vectorv;

vector<

int>()

.swap

(v);

建構函式

可快速構建乙個動態陣列

int n = 10;

vectorvec(n, 1);

第乙個引數表示初始的動態陣列的長度,第二個引數表示初始的陣列裡面每個元素的值,如果不傳入第二個引數,那麼初始的值都是0

二維動態陣列

定義乙個二維陣列:

vectorint>

> vec2;

乙個名稱為vec2,資料型別為int的二維陣列

其每一維都是空的,我們必須要一維一維的賦值

int n =5;

vectorint>

> vec2;

for(

int i =

0; i < n; i++

)for

(int i =

0; i < n; i++

) cout << endl;

}

1

11

111

1111

11111

上面**定義的二維陣列如上圖

二維動態陣列的每一維的長度都可以不一樣,可以是任意形狀的。借助建構函式可以快速構建乙個n行每行m個0的動態陣列(n行m列)

vector> vec2(n, vector(m, 0))
每行都給它加入乙個有m個0的一維陣列。

集合-set

c++中set的實現在乙個標頭檔案中,集合不出現重複元素

#include

using

namespace std;

intmain()

插入元素

s.erase

("china");

//{} 刪除元素

}

判斷元素是否存在,可以直接使用 cout()函式,如果有,返回1,否則返回0

遍歷c++通過迭代器訪問集合每個元素。通過 * (解引用運算子,不是乘號的意思)操作可以獲取迭代器指向的元素,通過++指向下乙個, --指向是乙個。

begin函式返回容器起始元素的迭代器,end函式返回容器的尾迭代器

set

::iterator it;

//定義看乙個指向set集合的迭代器it

//用法

for(set<

int>

::iterator it = s.

begin()

; it != s.

end(

); it++

)

c++中遍歷set是從小到大遍歷的,set會幫我們排序。

清空clear() 同時會清空set占用的記憶體

運算子過載

因為set是預設從小到大排序,如果用set來儲存結構體,我們自己定義的結構體,系統是不可能知道這個結構體比較大小的方式的。

struct node 

else}}

;

operator《表示我們要過載運算子 <

上面重新定義的排序方式為,優先按照x從小到大排序,如果x相同,那麼再按y從小到大

藍橋杯練習

k好數 問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 ...

藍橋杯練習

題目完成時間2021年3月16日 題目 計算機真是最傻的東西 他都不能計算大於10 65 1的a b,請你幫這個 最傻 的東西過關,否則它就真的只認識1和0了。輸入格式 共兩行 第一行輸入乙個整數a 第一行輸入乙個整數b。輸出格式 共一行,乙個表示a b的整數。樣例輸入 2147483647 214...

藍橋杯 基礎練習

basic 1 閏年判斷 給定乙個年份,判斷這一年是不是閏年。當以下情況之一滿足時,這一年是閏年 年份是4的倍數而不是100的倍數 年份是400的倍數。include using namespace std intmain basic 2 01字串 對於長度為5位的乙個01串,每一位都可能是0或1,...