藍橋杯演算法練習筆記 1 字串和日期

2021-10-02 17:28:42 字數 3735 閱讀 2829

1.ascii碼值

48–0 65–a 97–a

c++中ascii碼與常用字元之間的轉化

int

main()

2.字母三角形
#include

#include

using

namespace std;

intmain()

return0;

}//案例

輸入:5

輸出: a

bbbccccc

ddddddd

eeeeeeeee

1.字母三角形公升級版本

/* 

輸入:f

輸出: a

abaabcba

abcdcba

abcdedcba

abcdefedcba

輸入:5

輸出: 1

12112321

1234321

123454321

*/#include

#include

using

namespace std;

intmain()

for(

int j=

1; j<=i; j++

)for

(int j=i-

1; j>=

1; j--

) cout

for(

int j=

1; j<=i; j++

)for

(int j=i-

1; j>=

1; j--

) cout<}

1.小明圈寶藏問題

#include

using

namespace std;

intmain()

cout<<

"+"

int j=

1; j<=m; j++

) cout<<

"i"<}for

(int j=

1; j<=m; j++

) cout<<

"+"

}// 樣例

輸入:3

4輸出:+-

+-+-

+-+|

*|*|

*|*|

+-+-

+-+-

+|*|

*|*|

*|+-

+-+-

+-+|

*|*|

*|*|

+-+-

+-+-

+

3.字串和字元陣列
1.基本內容

定義字元陣列:char

*ch=

"abcde"

;char ch2[20]

;1.只有以\0為末尾結束的才算是字串,(否則只能算是字元陣列),在c中,只有以\0結束的才可以用「%s」的printf輸出,否則會輸出乙個奇怪的結果。。。?

2.c++中string直接賦值不改變原先的長度。。。?

intmain()

3.複製字串:c中函式原型char

*strcpy

(char

*destin,

char

*source)

,將source字串複製到destin

4.拼接字串:c中函式 char

*strcat

(char

*dest,

char

*soruce)

,將source字串拼接到dest後面,但是dest必須要有足夠的空間顯示拼接出來的字串

5.比較字串:c中函式 int

strcmp

(char

*str1,

char

*str2)

,從第乙個字元開始逐字元比較兩個字元的ascii碼值,如果下標為i的字串不相等,則函式返回 str1[i]

-str2[i]。如果兩個字串完全相等,則會返回0(如果返回結果大於0,則第乙個串大;如果小於0,則第乙個串小)

#include

#include

intmain()

判斷字串在乙個字串**現的次數

#include

#include

#include

using

namespace std;

char s1[

1005

],s2[

1005];

intmain()

}if(matched)

} cout

}

4.日期判斷

1.判斷今天是星期幾?

1.模擬法:記住某天是星期幾(例如公元1月1日是星期一),然後一天天模擬計算

#include

using

namespace std;

intwhatday

(int y,

int m,

int d)

else

}//計算過去當前月之後,是星期幾

for(

int i=

1;i)else

if(i==

4|| i==

6|| i==

9|| i==11)

elseif(

(y%100!=0

&& y%4==

0)|| y%

400==0)

else

}//計算過去幾天後

ans+

=(d-1)

%7; ans %=7

;return ans;

} string weekday[7]

=;intmain()

2.菜吉姆拉爾森計算公式:設星期為w,年份為y,月份為m,日期為d

w=(d+2

*m+3

*(m+1)

/5+y+y/

4-y/

100+y/

400)%7

在把計算的w+

1就是真正的星期幾

注:每年的1

,2月要當成上一年的13

,14月來計算

intmain()

if(m==2)

w=(d+2

*m+3

*(m+1)

/5+y+y/

4-y/

100+y/

400)%7

; cout<<

"星期"

<1

}

2.判斷自某天起n天後

輸入:乙個開始日期	幾天後

輸出:乙個日期

#include

using

namespace std;

int day[13]

=;intmain()

else

d++;if

(d==day[m]+1

)if(m==13)

}printf

("%04d-%02d-%02d"

,y,m,d)

;}

藍橋杯 基礎練習 01字串

問題描述 對於長度為5位的乙個01串,每一位都可能是0或1,一共有32種可能。它們的前幾個是 請按從小到大的順序輸出這32種01串。輸入格式 本試題沒有輸入。輸出格式 輸出32行,按從小到大的順序每行乙個長度為5的01串。樣例輸出 00000 00001 00010 00011 以下部分省略 看見題...

藍橋杯基礎練習2 01字串

藍橋杯練習系統 基礎練習basic 2 時間限制 1.0s 記憶體限制 256.0mb 對於長度為5位的乙個01串,每一位都可能是0或1,一共有32種可能。它們的前幾個是 請按從小到大的順序輸出這32種01串。本試題沒有輸入。輸出32行,按從小到大的順序每行乙個長度為5的01串。樣例輸出 00000...

藍橋杯 基礎練習 01字串

對於長度為5位的乙個01串,每一位都可能是0或1,一共有32種可能。它們的前幾個是 請按從小到大的順序輸出這32種01串。輸入格式 本試題沒有輸入。輸出格式 輸出32行,按從小到大的順序每行乙個長度為5的01串。解法一 迴圈 include using namespace std intmain r...