打印蛇型数组
今天我们做一个很有趣的事情 , 玩个小游戏 ,打印一个蛇型数组。
首先,什么是蛇型数组呢,如图:
那么 , 通过c语言如何完成这个要求呢。
其实,很简单
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n=1;
int x, y, round;
//a[x][y],x是二维数组的第一个下标,y是二维数组的第二个下标,
//round是转的圈数,从0开始。
int count = 1;//从1开始计数
printf("Please input a number:\n");
scanf_s("%d", &n);//用户输入n的值
int(*a) = (int *)calloc(n * n, sizeof(int));//创建n*n的矩阵
for (round = 0; round < n / 2; round++)
{
x = round;
for (y = round; y < n - round; y++)
{
a[x][y] = count;
count++;
}
//print 1,2,3,4,5
y = n - round - 1;
for (x = round + 1; x < n - round - 1; x++)
{
a[x][y] = count;
count++;
}
//print 6,7,8
x = n - round - 1;
for (y = n - round - 1; y >= round; y--)
{
a[x][y] = count;
count++;
}
//print 13,12,11,10,9
y = round;
for (x = n - round - 2; x > round; x--)
{
a[x][y] = count;
count++;
}
//print 16,15,14
}
if (n % 2 == 1)
{
a[n / 2][n / 2] = n * n;
}
for (x = 0; x < n; x++)
{
for (y = 0; y < n; y++)
{
printf(" %d ", a[x][y]);
}
printf("\n");
}
free(a);
return 0;
}
这里,就完成了蛇形数组了,它还有一系列的扩展,以后有机会,在写出了和大家交流。