螺旋数组顾名思义就是一个旋转的数组,数组大小由小到大顺时针缩小到最后一位。
例如五乘五的螺旋数组如下,
其实从上面的例子可以看出一点规律了,数字从左到右递增,当递增到右侧最后一位数组的时候就从上往下递增接着递增到底部最后一位的时候,就从右往左递增,递增到左侧最后一位数组的时候就又从下往上递增,然后递增数组逐次减一。经过这样的反复循环即可得出上图图形。
代码如下
#include "pch.h"
#include <iostream>
#define N 10 //为宏定义命令确保矩形数组的最大值
using namespace std;
void main()
{
int n;
cout << "请输入一个你想要的N乘N矩形数组,矩形数组不能大于10*10规模" << endl;
cin >> n;
//此处要做个判断,判断输入的值时候在1到10之间的值
if (n >= 10&&n<0) {
cout << "请输入1-10范围内的数字" << endl;
}
else
{
int i, j, k, s;
int a[N][N];
k = 1, s = 0, i = 0;
while (k <= (n * n)) {//判断K值不大于n*n的值
for (j = s; j < n - s; j++) {//此处从左往右的值
a[i][j] = k++;
}
j--;
for (i = s + 1; i < n - s; i++) {//此处从上往下的值
a[i][j] = k++;
}
i--;
for (j = n - s - 2; j >= s; j--) {//此处从右往左的值
a[i][j] = k++;
}
j++;
for (i = n - s - 2; i >= s + 1; i--) {//此处从下往上的值
a[i][j] = k++;
}
i++;
s++;
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
cout << a[i][j] << ends;//将整个数组显示出来
if (a[i][j] < 10) {
cout << ends;//判断数组小于10的时候添加一位空格,显示时更美观些
}
}
cout << endl;
}
}
}
结果如下