【无标题】蛇形数组

蛇形数组

描述

输入维数 n (n<=25,为奇数),输出 n 维蛇形数组。

输入

维数n (n<=25,为奇数)

输出

初始如示例的蛇形数组(每个数据域宽为4,左对齐)

输入样例 1 

3

输出样例 1

5   4   3
6   1   2
7   8   9

输入样例 2 

5

输出样例 2

17  16  15  14  13
18  5   4   3   12
19  6   1   2   11
20  7   8   9   10
21  22  23  24  25 
include <stdio.h>
int sum;
int arr[100][100];
int n;//维度
int quan=1;//圈数
int x,y;//最初的起始坐标
int t,z;//用来记录坐标
void xia();
void zuo();
void shang();
void you();
int main()
{
  scanf("%d",&n);
  sum=n*n;
  int m;
  m=n%2;
  if(n<=25&&m!=0)
  {
    x=n-1;y=n-1;
    t=x;z=y;
   int cern;
    cern=n*2;
    int flag=1;
    for(cern;cern>0;cern--)
    {
      if(flag==1)
      {
       xia();
        flag++;
      }
      else if(flag==2)
      {
       zuo();
        flag++;
      }
      else if(flag==3)
      {
       shang();
        flag++;
      }
      else if(flag==4)
      {
       you();
        flag=1;
      }
    }
    for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{
    		printf("%-4d",arr[i][j]);
		}
		printf("\n");
	}
    return 0;
  }
  else
  {
    return 0;
  }
}
void xia()
{
  int x1,y1;//起点坐标
  int x2,y2;//终点坐标
  x1=t;y1=z;
  int i=t;
  int j=z;
  int qq;
  for(j=z;j>=quan-1;j--)
  {
    arr[i][j]=sum;
   // printf("%d",arr[i][j]);
    sum--;
    qq=j;
  }
  sum+=1;
  z=qq;
}
void zuo()
{
  int x1,y1;//起点坐标
  int x2,y2;//终点坐标
  x1=t;y1=z;
  int i=t;
  int j=z;
  int qq;
  for(i=t;i>=quan-1;i--)
  {
    arr[i][j]=sum;
    //printf("%d",arr[i][j]);
    sum--;
    qq=i;
  }
  sum+=1;
  t=qq;
}
void shang()
{
  int x1,y1;//起点坐标
  int x2,y2;//终点坐标
  x1=t;y1=z;
  int i=t;
  int j=z;
  int qq;
  for(j=z;j<=n-quan;j++)
  {
    arr[i][j]=sum;
    //printf("%d",arr[i][j]);
    sum--;
    qq=j;
  }
  sum+=1;
  z=qq;
}
void you()
{
  int x1,y1;//起点坐标
  int x2,y2;//终点坐标
  x1=t;y1=z;
  int i=t;
  int j=z;
  int qq;
  for(i=t;i<n-quan;i++)
  {
    arr[i][j]=sum;
    //printf("%d",arr[i][j]);
    sum--;
    qq=i;
  }
  sum+=1;
  t=qq;
  quan++;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值