打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,

打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,…
例子:当N =5,打印出下面的图形:
X X X X X
X Y Y Y X
X Y 0 Y X
X Y Y Y X
X X X X X
思路:
一、使用x、y作为“坐标轴”,从上到下从左到右依次打印出图形
实现方法就是把x自加,直到x=n的时候清零,然后y+1,这样一直持续到y也等于0

for(;;x++)
	{....
	if(x==n)
				{
					
					if(y==n)
					{							
						return 0;
					}
					printf("\n");					
					x=0;
					y++;						
				}

二、第一行和最后一行全是x,且每行第一个以及倒数第一个也是x

if((x==1)|(y==1)|(x==n)|(y==n))

三、第二行以及倒数第二行掐头去尾都是y,且其他行第二个和倒数第二个也是y

else if((y==2)|((y+1)==n)|(x==2)|((x+1)==n))

四、剩下的每一行其他的数字就是打印行数-3即可

printf("%d",y-3);
#include<stdio.h>
 
int main()
{
	int n=7;//改这里的n
	int x=1, y=1;
	for(;;x++)
	{
		
		if((x==1)|(y==1)|(x==n)|(y==n))
		{
			printf("X");
		}
		else if((y==2)|((y+1)==n)|(x==2)|((x+1)==n))
		{
			printf("Y");
		}
		else 
		{
			printf("%d",y-3);
		}
		
		 if(x==n)
				{
					
					if(y==n)
					{							
						return 0;
					}
					printf("\n");					
					x=0;
					y++;						
				}
						
	}
	}
	

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值