历届试题 PREV-2 打印十字图

问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:

..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
样例输入2
3
样例输出2
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示
请仔细观察样例,尤其要注意句点的数量和输出位置。
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	
	// n=0,5
	// n=1,9
	//  
	int sum = 5+4*n;
	int **a = new int *[sum];
	
	for(int i=0;i<sum;i++){
		a[i] = new int[sum];
		for(int j=0;j<sum;j++){
			a[i][j] = 0;
		}
	}
	int cen = (sum-1)/2;
	// 打印左上角的图形( 分成a,b,c 三部分)(然后利用对称赋值输出)
	// 打印a 部分
	for (int i = cen; i > 0; i = i - 2)	
	{
		a[i][i] = 1;
		a[i-1][i] = 1;
		a[i][i-1] = 1;
	}
	// 打印b部分 
	int x = 0;
	for (int y = 0; y <= (cen - 2); y = y + 2)
	{
		x = x + 2;
		for (int i = x; i <= cen; i++)
		{
			a[i][y] = 1;
		}
	}
	// 打印c 部分 
	int y = 0;
	for (int x = 0; x <= (cen - 2); x = x + 2)
	{
		y = y + 2;
		for (int i = y; i <= cen; i++)
		{
			a[x][i] = 1;
		}
	}
	// y轴对称	左上半部分对应左下半部分

	for (int y = 0; y <= cen;y++)
	for (int x = sum - 1; x > cen; x--)
	{
		a[x][y] = a[sum - 1 - x][y];
	}

	// x轴对称  左半部分 对应右半部分

	for (int x = 0; x < sum;x++)
	for (int y = sum - 1; y>cen; y--)
	{
		a[x][y] = a[x][sum-1- y];
	}
	// 输出 图形

	for (int i = 0; i < sum; i++)
	{
		for (int j = 0; j < sum; j++)
		{
			if(a[i][j]==0){
				cout<<".";
			}else{
				cout<<"$";
			}
		}
		cout<<endl;
	}
	
	return 0;
}

在这里插入图片描述

原文地址:https://www.cnblogs.com/ZCWang/p/12507456.html