• 历届试题 打印十字图


    问题描述

    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
    在这里插入图片描述
    对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

    输入格式

    一个正整数 n (n<30) 表示要求打印图形的层数。

    输出格式

    对应包围层数的该标志。

    样例输入1

    1

    样例输出1

    在这里插入图片描述

    样例输入2

    3

    样例输出2

    在这里插入图片描述

    提示

    请仔细观察样例,尤其要注意句点的数量和输出位置。

    代码

    #include <iostream>
    using namespace std;
    char fan(char i)
    {
    	return i=='$'?'.':'$';
    }
    int main()
    {
    	int n;
    	cin>>n;
    	char ten[5+n*4+1][5+n*4+1];
    	for(int i=1;i<=5+n*4;i++)
    	{
    		for(int j=1;j<=5+n*4;j++)
    		{
    			ten[i][j]=' ';
    		}
    	}
    	for(int i=1;i<=(5+4*n);i++)
    	{
    		if(i>=3&&i<=5+4*n-2)
    		{
    			ten[1][i]='$';
    			ten[i][1]='$';
    		}
    		else
    		{
    			ten[1][i]='.';
    			ten[i][1]='.';
    		}
    	}
    	for(int j=1;j<=(5+4*n);j++)
    	{
    		if(j>=3&&j<=5+4*n-2)
    		{
    			ten[5+4*n][j]='$';
    			ten[j][5+4*n]='$';
    		}
    		else
    		{
    			ten[j][5+4*n]='.';
    			ten[5+4*n][j]='.';
    		}
    	}
    	ten[1][1]='$';
    	ten[1][5+4*n]='$';
    	ten[5+4*n][1]='$';
    	ten[5+4*n][5+4*n]='$';
    	for(int i=1;i<(5+4*n)/2;i++)
    	{
    		for(int j=1;j<(5+4*n)/2;j++)
    		{
    			ten[i+1][j+1]=fan(ten[i][j]);
    		}
    	}
    	for(int i=1;i<(5+4*n)/2;i++)
    	{
    		for(int j=(5+4*n);j>(5+4*n)/2+2;j--)
    		{
    			ten[i+1][j-1]=fan(ten[i][j]);
    		}
    	}
    	for(int i=(5+4*n);i>(5+4*n)/2+2;i--)
    	{
    		for(int j=1;j<(5+4*n)/2;j++)
    		{
    			ten[i-1][j+1]=fan(ten[i][j]);
    		}
    	}
    	for(int i=(5+4*n);i>(5+4*n)/2+2;i--)
    	{
    		for(int j=(5+4*n);j>(5+4*n)/2+2;j--)
    		{
    			ten[i-1][j-1]=fan(ten[i][j]);
    		}
    	}
     	ten[1][1]='.';
     	ten[1][5+n*4]='.';
     	ten[5+n*4][1]='.';
     	ten[5+n*4][5+n*4]='.';
    	int top=(5+n*4)/2-2,down=(5+n*4)/2+4,left=(5+n*4)/2-2,right=(5+n*4)/2+4;
    	while(top>=1)
    	{
    		ten[top][(5+n*4)/2+1]='.';
    		ten[top-1][(5+n*4)/2+1]='$';
    		top-=2;
    	}
    	while(down<(5+4*n+1))
    	{
    		ten[down][(5+n*4)/2+1]='.';
    		ten[down+1][(5+n*4)/2+1]='$';
    		down+=2;
    	}
    	while(left>=1)
    	{
    		ten[(5+n*4)/2+1][left]='.';
    		ten[(5+n*4)/2+1][left-1]='$';
    		left-=2;
    	}
    	while(right<(5+4*n+1))
    	{
    		ten[(5+n*4)/2+1][right]='.';
    		ten[(5+n*4)/2+1][right+1]='$';
    		right+=2;
    	}
    	ten[(5+n*4)/2+1][(5+n*4)/2+1]='$';
    	ten[(5+n*4)/2-1][(5+n*4)/2+1]='$';
    	ten[(5+n*4)/2][(5+n*4)/2+1]='$';
    	ten[(5+n*4)/2+2][(5+n*4)/2+1]='$';
    	ten[(5+n*4)/2+3][(5+n*4)/2+1]='$';
    	ten[(5+n*4)/2+1][(5+n*4)/2-1]='$';
    	ten[(5+n*4)/2+1][(5+n*4)/2]='$';
    	ten[(5+n*4)/2+1][(5+n*4)/2+2]='$';
     	ten[(5+n*4)/2+1][(5+n*4)/2+3]='$';
    	for(int i=1;i<=5+n*4;i++)
    	{
    		for(int j=1;j<=5+n*4;j++)
    		{
    			printf("%c",ten[i][j]);
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    poj3468一个简单的整数问题,我昨天一下午才写好的水代码。
    【虚幻】虚幻引擎小技巧
    ubuntu添加并设置屏幕分辨率
    ECDH秘钥协商算法原理
    ECC椭圆曲线算法2
    Neighbor Discovery Protocol
    IPv6 linklocal 地址的功能和原理
    ECC椭圆曲线算法3
    Linux下使用可视化的串口调试工具cutecom
    AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338822.html
Copyright © 2020-2023  润新知