題目描述
小明為某機構設計了一個十字型的徽標(並非紅十字會啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
對方同時也需要在電腦dos窗口中以字符的形式輸出該標志,並能任意控制層數。
輸入1 ,則輸出
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
輸入
一個正整數 n (n< 30) 表示要求打印圖形的層數。
輸出
對應包圍層數的該標志。
樣例輸入
3
樣例輸出
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示
請仔細觀察樣例,尤其要注意句點的數量和輸出位置。
思路
從最外層開始打印‘$’, 先打印橫線和豎線上的‘$’,再打印四個角的直角‘$’
1 #include<bits/stdc++.h> 2 using namespace std; 3 char s[220][220]; 4 int main() 5 { 6 int n; 7 scanf("%d",&n); 8 int o=n*4+5; 9 int l=2,a=0; 10 memset(s,'.',sizeof(s)); 11 n++; 12 while(n--) 13 { 14 for(int i=l; i<o-l; i++) 15 s[a][i]=s[i][a]=s[i][o-a-1]=s[o-a-1][i]='$'; 16 s[a+1][l]=s[l][a+1]=s[l][l]='$';//左上 17 s[a+1][o-1-l]=s[l][o-a-2]=s[l][o-1-l]='$';//右上 18 s[o-a-2][l]=s[o-1-l][a+1]=s[o-1-l][l]='$';//左下 19 s[o-a-2][o-1-l]=s[o-1-l][o-a-2]=s[o-1-l][o-1-l]='$';//右下 20 a+=2; 21 l+=2; 22 } 23 for(int i=0; i<o; i++) 24 { 25 for(int j=0; j<o; j++) 26 putchar(s[i][j]); 27 putchar('\n'); 28 } 29 return 0; 30 }