输出九宫格

编程输出以下格式的数据。(趣味题)

When i=0

       1
 When i=1

       7   8   9
       6   1   2
       5   4   3
When i=2

      21  22  23  24  25
      20    7    8    9  10
      19    6    1    2  11
      18    5    4    3  12

      17  16  15  14  13

#include <iostream>

#include <string>

using namespace std;

 int main(void)

 {

	 int i;

	 cout<<"请输入半径i:";

	 cin>>i;

	 //x,y是数组a的下表

	 int x=i,y=i;

	 //medi存储前一个数组a的值

	 int medi;

	 int a[100][100]={};

	 //给定初始数组值

	 a[i][i]=1;

	 //i等于0时,特殊处理

	 if(i==0)

		 cout<<1;

	 //j+1;i+1;j-1,j-1;i-1,i-1;

	 //从i>=1开始,循环总数为2i

	 //奇数的时候,ij坐标加上1,次数为当前的循环变量

	 //偶数的时候,ij坐标减去1,次数为当前的循环变量

	 else

	 {

		for(int m=1;m<=2*i;m++)

		{

			if(m%2!=0)

			{

				for(int u=0;u<m;u++)

				{

				medi=a[x][y];

				y=y+1;

				a[x][y]=medi+1;

				}

				for(int u=0;u<m;u++)

				{

				medi=a[x][y];

				x=x+1;

				a[x][y]=medi+1;

				}

			}

			if(m%2==0)

			{

				for(int u=0;u<m;u++)

				{

				medi=a[x][y];

				y=y-1;

				a[x][y]=medi+1;

				}

				for(int u=0;u<m;u++)

				{

				medi=a[x][y];

				x=x-1;

				a[x][y]=medi+1;

				}

			}

		}

	//最后多出一次累加,需要单独处理

		for(int m=1;m<=2*i;m++)

		{

			medi=a[x][y];

			y=y+1;

			a[x][y]=medi+1;

		}

	//以行输出

	 for(int m=0;m<=2*i;m++)

	 {

		 for(int n=0;n<=2*i;n++)

		 {

			 cout<<a[m][n];

			 cout<<"  ";

		 }

		 cout<<" "<<endl;

	 }

	 }

	getchar();

	//输入字符,退出编译,方便调试

	char b;

	std::cin>>b;

	return 0;

 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值