這個oj需要登入才能使用,不過裡面的題都還挺好的,從簡單到複雜,分門別類。感興趣的可以用一用,不感興趣可以直接看下面。
簡單,適合學完基礎語法的同學,只需要了解迴圈,陣列等知識。
輸入乙個正整數n,輸出n×n的回形方陣。例如,n=5時,輸出:
111
1112
2211
2321
1222
1111
11
正整數n(2<=n<=10)
回形矩陣,每行最後乙個數字沒有空格。
建立乙個二維陣列,然後從外圈,依次往內圈填充,然後輸出。
找出每一行的規律,逐行列印,稍微有點複雜。規律是這樣的:
因為上下是對稱的,所以先考慮前面一半的行數:
我畫了3條線,這樣也許你就能看出來規律了:
第一行:依次列印: |11111|
第二行: 依次列印:1->1|222|1->1
第三行:依次列印: 1->2|3|2->1
注:1->2表示從1列印到2,即輸出1 2, |表示分割列印步驟
這樣一來,每行的列印其實被劃分為了三個步驟,只要我們實現這三個函式,就可以了。
#include
#include
using namespace std;
//填充函式:每次執行會填充一圈,從外側開始
void
outside
(int a[
10],int c,
int n,
int n)
intmain()
//輸出a
for(
int i=
0;icout<
}}
其實是在*pt=xx 這個語句處都可以直接把xx輸出的,但是因為格式要求無法滿足,不知道**是行的最後乙個輸出,只能先存到陣列中再輸出,不過此處因為我們是嚴格按照行的順序產生元素的,所以直接用一維陣列儲存就可以了。
#include
#include
using namespace std;
//從n列印到p,實現n->p的功能,將每行第一步和第三步合為乙個函式
int*
couta
(int
*pt,
int n,
int p)
}//從大到小
else
}return pt;
}//列印n個p
int*
coutn
(int
*pt,
int n,
int p)
return pt;
}int
main()
//輸出剩餘的行,因為是對稱的,只需要i從大到小反著輸出一次就行,根據上面假設,則輸出為3,2,1
for(
int i=n/2-
1;i>=
0;i--
)//輸出一維陣列
for(
int i=
0;icout<
}}
最後再推薦一下這個oj,leecode我認為對初學者難度太高了。 和海王一起從零刷題之2 大數加法
這是乙個面試很喜歡問的問題,也不算很複雜。要把a,b兩個很大的數 超過了long long 的表示範圍,相加並得出結果。應該如何做?簡單,需要掌握陣列,字串等知識,但容易出錯。假設a 12345 b 56789 由於a,b太長了,這裡只取前五位說明 接收應該用2個字串陣列來接收a,b。儲存a 123...
和融躍一起零基礎學習FRM
frm被稱為是 無法自學通過 的考試,對於零基礎考生來說,首先就必須要對自己的備考進行規劃,留下充足的複習時間,才能夠順利通過考試。garp協會的建議是15周的時間通過一門考試,需要根據自己的實際情況進行調整,找出最適合自己的備考方案。把自己的備考分成四個階段 第一階段,通讀階段 結合考試大綱將考試...
和菜鳥一起學c之函式指標
還有sd卡的檔案格式識別還不會,等明天和飛刀一起討論下,基本的android的sd卡的自動掛載已經實現了,可惜只支援fat格式的,ext格式的他不支援,新增了那些其他格式的掛載還是不行,主要是識別還不知道怎麼去實現。好了,既然這麼著,還是把以前看的一些函式指標做個記錄吧。因為linux驅動中很多很多...