例題 2.5 疊筐(《計算機考研機試指南》p12)
題目描述
把乙個個大小差一圈的筐疊上去,由里到外看像乙個乙個的環
輸入
輸入乙個三元組,分別是:外筐的尺寸 n(大於 0 小於 80 的正奇數)、中心花色字元、外圍花色字元。
輸出
乙個疊筐的圖案
示例輸入
11 b a
5 @ w
示例輸出
aaaaaaaaa
abbbbbbbbba
abaaaaaaaba
ababbbbbaba
ababaaababa
abababababa
ababaaababa
ababbbbbaba
abaaaaaaaba
abbbbbbbbba
aaaaaaaaa
@@@@www@
@w@w@
@www@
@@@
【分析】方法一:
找到圖形構造的規律,發現其實上下左右對稱的,根據規律一行一行列印輸出。
方法二:
根據規律構造乙個二維陣列,根據規律往裡面填充字元,一次填充乙個圈,最後將整個二維陣列列印輸出。此方法整體複雜程度優於第一種。
【** 2.5 法一】
#include #include using namespace std;
int main(int argc, char const *ar**)
else
stackst1;
// 迴圈列印上 h/2 行
for (int i = 0; i < h/2; ++i)
elseelse
}} // 列印上三角
for (int k = i+1; k < h/2; ++k)
else
}} // 列印中間字元
if (i%2 == 0)
else
// 列印右邊對稱
while(!st2.empty())
printf("\n");
st1.push('\n');
} // 列印中間行
for (int i = 0; i < h; ++i)
else
} while(!st1.empty())
printf("\n");
return 0;
}
【總結】此方法利用堆疊簡化了部分**。總體圖案有行列組成,既有行對稱又有列對稱,對於每一行,只需要考慮左半部分,而左邊又由兩部分組成,可以看作是乙個上三角和乙個下三角。根據規律分別列印。將列印輸出的字元壓入乙個堆疊,即可得到右半部分對稱的圖案。上下對稱的部分同理。中間部分需要另外的邏輯單獨處理。此方法邏輯較為繁瑣,不推薦使用。 C語言程式設計練習35 疊筐
題目描述 把乙個個大小差一圈的筐疊上去,使得從上往下看時,邊筐花色交錯。這個工作現在要讓計算機來完成,得看你的了。輸入 輸入是乙個個的三元組,分別是,外筐尺寸n n為滿足0 輸出 輸出疊在一起的筐圖案,中心花色與外筐花色字元從內層起交錯相疊,多筐相疊時,最外筐的角總是被打磨掉。疊筐與疊筐之間應有一行...
winsock之 TCP IP的簡單程式設計
問題記錄 1.寫這個 的時候犯了乙個最低階的問題搞錯了優先順序。的優先順序要大於 的優先順序要大於 的優先順序,最好用括號來避免這種問題。2.在所有tcp伺服器中,在呼叫bind之前設定so reuseaddr套介面選項。一般來說 乙個埠釋放後會等待兩分鐘之後才能再被使用 so reuseaddr ...
C C 程式設計題之簡單密碼
密碼是我們生活中非常重要的東東,我們的那麼一點不能說的秘密就全靠它了。哇哈哈.接下來淵子要在密碼之上再加一套密碼,雖然簡單但也安全。假設淵子原來乙個bbs上的密碼為zvbo9441987,為了方便記憶,他通過一種演算法把這個密碼變換成yuanzhi1987,這個密碼是他的名字和出生年份,怎麼忘都忘不...