使用C++实现输出螺旋方阵,已运行就出错,求解答!
#include <iostream>
#include <string.h>
#include <iomanip>
using namespace std;
int number[1000][1000] = {0}, start = 1, turn_right = 0, turn_down = 0;
void run(int num) { //此参数作为螺旋方阵边长
int temp_long = num;
// memset(number, 0, sizeof(number));
for (int icircle = 0; icircle < num / 2; icircle++) {
for (; turn_right < temp_long - 1; turn_right++) { //从左到右
number[turn_down][turn_right] = start++;
cout << number[turn_down][turn_right] << endl;
}
for (; turn_down < temp_long - 1; turn_down++) { //从上到下
number[turn_down][turn_right] = start++;
}
for (turn_right = temp_long - 1; turn_right > icircle;
turn_right--) { //turn_right定位到本圈本行末尾,icircle的值为本圈第一个元素的下标
number[turn_down][turn_right] = start++;
}
for (turn_down = temp_long - 1; turn_down > icircle; turn_down--) {
number[turn_down][turn_right] = start++;
}
turn_down--;
temp_long--;
start--;
}
if (num % 2 == 1) {
number[turn_down][turn_right + 1] = start++;
}
for (int i = 0; i < num; i++) {
for (int i2 = 0; i2 < num; i2++) {
cout << setw(2) << number[i][i2];
}
cout << endl;
}
}
int main() {
int size;
cout << "请输入螺旋方阵边长:";
cin >> size;
run(size);
return 0;
}