1. 程式人生 > >【藍橋杯】打印十字圖(圖形規律)

【藍橋杯】打印十字圖(圖形規律)

clas pan dos nbsp har name can data 圖形

題目描述

小明為某機構設計了一個十字型的徽標(並非紅十字會啊),如下所示:

..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..

對方同時也需要在電腦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 }

【藍橋杯】打印十字圖(圖形規律)