zoukankan      html  css  js  c++  java
  • 历届试题 打印十字图

    问题描述

    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
    在这里插入图片描述
    对方同时也需要在电脑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;
    }
    
  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    leetcode 213. 打家劫舍 II JAVA
    leetcode 48. 旋转图像 java
    leetcode 45. 跳跃游戏 II JAVA
    leetcode 42. 接雨水 JAVA
    40. 组合总和 II leetcode JAVA
    24. 两两交换链表中的节点 leetcode
    1002. 查找常用字符 leecode
    leetcode 23. 合并K个排序链表 JAVA
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338822.html
Copyright © 2011-2022 走看看