試題 歷屆試題 打印十字圖(打印圖案)

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

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

對方同時也需要在電腦dos窗口中以字符的形式輸出該標誌,並能任意控制層數。

輸入格式
一個正整數 n (n<30) 表示要求打印圖形的層數。
輸出格式
對應包圍層數的該標誌。
樣例輸入1
1
樣例輸出1

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

樣例輸入2
3
樣例輸出2

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

提示
請仔細觀察樣例,尤其要注意句點的數量和輸出位置。

這題好久之前就看到過了,被嚇的不敢做。。。
打印圖案的都是找規律,然後輸出。這題由於樣例的原因,是長方形的,不好發現規律,在每一個字符後面加一個空格就好看多了。

在這裏插入圖片描述
這樣就好看多了

#include<cstdio>
#include<cstring>
using namespace std;
const int N=505;
const int inf=0x3f3f3f3f;
char a[N][N];
int main()
{
	int n,i,j,k,x,y,cnt=0;
	scanf("%d",&n);
	memset(a,'.',sizeof(a));
	for(i=1;i<=n;i++){
		for(j=i*2+1;j<=2*(n+1)+1;j++){
			a[i*2-1][j]=a[j][i*2-1]='$';
		}		
	}
	
	for(i=1;i<=n+1;i++){
		int t=i*2+1;
		a[t][t]=a[t-1][t]=a[t-2][t]=a[t][t-1]=a[t][t-2]='$';
	}
	
	
	for(i=1;i<=2*(n+1)+1;i++){
		for(j=1;j<=2*(n+1)+1;j++)
			printf("%c",a[i][j]);
		for(j=2*(n+1);j>=1;j--)
			printf("%c",a[i][j]);
		printf("\n");
	}
	for(i=2*(n+1);i>=1;i--){
		for(j=1;j<=2*(n+1)+1;j++)
			printf("%c",a[i][j]);
		for(j=2*(n+1);j>=1;j--)
			printf("%c",a[i][j]);
		printf("\n");
	}
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章