c语言做法蛇形数组

蛇形数组

.

要求:在n* n方阵里输入1,2,3,…,n,填成蛇形:

.

思想:图形的方向是向右,下,左,上,在进入内圈的时候还是右,下,左,上,所以我们可以创建四个变量来控制它的方向和二维数组和一个对应的自增变量往数组中存入相应的数值,最后可再用循环控制内层的圈数;

.

在这里插入图片描述

.

对应代码如下:

#include<stdio.h>
int arr[100][100];//开辟了一个100*100的整形二维数组空间
int n;//创建了一个全局变量 不赋初值默认为0;
int main()
{
	scanf("%d",&n);//确定这是一个几*几的蛇形矩阵;
	int cnt=1,i,j;
	int tap=0,  bottom=n-1;//将顶部赋值为0,底部赋值为n-1因为数组从0开始所以该数的位置在数组下标减一处;
	int left=0,  right=n-1;//同理将左右倆个方向赋上相应的值以便后期的方向的移动
	while(tap<=bottom&&right>=left) //将范围控制在顶部的方向不能超过底部的指向 并且 左边的方向不能大于右边的指向负责会将以及将存入的数覆盖;
	{  //先排序tap行 
	   int t = left;//将开始的数赋值给t 让其进行移动 因为原left还需为下一次移动做准备 所以创建一个中间变量来使其代替left移动
	    while(t<=right)//进行右移自加
		{
			arr[tap][t++]=cnt++; //在该数组中依次在tap行中右移并自加赋值
		 } 
		 tap++; //进入第二行
		 //排序right列 
		 t = tap;//将该行赋值给t 让其进行移动 原因跟排tap行相同
		 while(t<=bottom) //同理进行下移自加赋值
		 {arr[t++][right]=cnt++;}   
		  right--;
	      t=right;
	    while(t>=left)//左移自加赋值
	    {
	    	arr[bottom][t--]=cnt++;
		}
		bottom--;
		t=bottom;
		while(t>=tap)//上移自加赋值
		{
			arr[t--][left]=cnt++;
		}	 
	}
	    for(i=0;i<n;i++) //将旋转好的数输出
       	{
		   for(j=0;j<n;j++)
		   printf("%-5d",arr[i][j]); //-号左对其  5最短输出5位  (起到美观的作用) 
       	   printf("\n");
	    }
	return 0;
}

以上就是关于蛇形数组的做法及其讲解.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值