13. 鏤空三角形
時間限制:1.000S??空間限制:32MB
題目描述
把一個字符三角形掏空,就能節省材料成本,減輕重量,但關鍵是為了追求另一種視覺效果。在設計的過程中,需要給出各種花紋的材料和大小尺寸的三角形樣板,通過電腦臨時做出來,以便看看效果。
輸入描述
每行包含一個字符和一個整數n(0<n<41),不同的字符表示不同的花紋,整數n表示等腰三角形的高。顯然其底邊長為2n-1。如果遇到@字符,則表示所做出來的樣板三角形已經夠了。
輸出描述
每個樣板三角形之間應空上一行,三角形的中間為空。行末沒有多余的空格。每條結果后需要再多輸出一個空行。
輸入示例
X 2
A 7
@
輸出示例
X
XXXAA AA AA AA AA A
AAAAAAAAAAAAA
?不知道為什么不能用fflush(stdin)來清除輸入緩沖區;
解法如下:
#include <stdio.h> void func(char,int); int main(){char p1;int num=0;while(scanf("%c",&p1)!=EOF){if(p1 == '@') break;scanf("%d",&num);func(p1,num);getchar();printf("\n");}} void func(char p1,int num){int max_len = 2*num -1;int len = 1;while(len<=max_len){if(len==max_len){for(int i=0;i<max_len;i++) printf("%c",p1);}else {int tmp = (max_len - len) / 2;for (int i = 0; i < tmp; i++) {printf(" ");}int space = len - 2;if (space < 0) printf("%c", p1);else {printf("%c", p1);for (int i = 0; i < space; i++) printf(" ");printf("%c", p1);}}len += 2;printf("\n");} }