我首先为java编写了这段代码。它应该将二维阵列打印为螺旋。我想在 c++ 中尝试它。在 java 中;有一个draw方法。但是 c++ 不接受数组作为返回类型(可以通过指针完成),所以我删除了 draw 方法并复制到 main 方法中。我评论了开始和结束的绘制方法。但现在; 在draw方法之后的for循环(我也评论过)没有开始。有什么问题; 我看不到它...感谢您的帮助。
int T ;
scanf("%d", &T);
int num[T];
for(int i = 0; i < T; i++){
scanf("%d", &num[i]);
}
for(int m = 0; m < T; m++){
int n = num[m];
int a[n][n];
//draw -start
int all = n*n;
int x = 0, y=0;
for(int counter=1; counter<=all; counter++){
for(int i = 0; i < n; i++){
a[x][y] = counter++;
y++;}
x++; y--;
for(int i = 0; i < n-1; i++){
a[x][y] = counter++;
x++;}
x--; y--;
for(int i = 0; i < n-1; i++){
a[x][y] = counter++;}
x--; y++;
for(int i = 0; i < n-2; i++){
a[x][y] = counter++;}
y++; x++; n = n-2;}
//draw - end
//this for is not starting
for(int i = 0; i<n; i++){
printf("a");
for(int j = 0; i<n; j++){
printf("a");
printf("%d ", a[i][j]);
}
printf("\n");
}