如题
题目是要输出一个螺旋形的矩阵
比如输入4, 输出就是
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
#include
using namespace std;
int main()
{
int **a, n, i, j, k = 1;
cin >> n;
if(n > 120) cin >> n;
a = new int *[n];
for (i = 0; i < n; ++i) a[i] = new int [n];
for(i = 0; i < n; ++i) for(j = 0; j < n; ++j) a[i][j] = 0;
i = j = 0;
while(k <= n * n){
while(i < n && j >= 0) {
if(a[j][i] != 0) break;
a[j][i] = k;
++i;
++k;
}
i -= 1; j += 1;
while(j < n && j >= 0){
if(a[j][i] != 0) break;
a[j][i] = k;
++j;
++k;
}
j -= 1; i -= 1;
while(i < n && i >= 0){
if(a[j][i] != 0) break;
a[j][i] = k;
--i;
++k;
}
i += 1; j -= 1;
while(i < n && i >= 0){
if(a[j][i] != 0) break;
a[j][i] = k;
--j;
++k;
}
j += 1; i += 1;
}
cout << endl;
for(i = 0; i < n; ++i) {
for(j = 0; j < n; ++j) cout << setw(6) << a[i][j];
cout << endl;
}
for(i = 0; i < n; ++i) delete [] a[i];
delete [] a;
return 0;
}
你这没有出错,是不是你的头文件没导入
#include
#include "iostream"
最开始加上这两行
自己写了一个,可以参考
#include <iostream>
#include <stdio.h>
using namespace std;
int matrix_init(int ***p)
{
int res = 1;
int size = 0;
printf("输入矩阵大小(大于1):");
cin >> size;
do
{
if ((*p = new int *[size]) == NULL)
{
res = 0;
break;
}
for (int i = 0; i < size; i++)
{
if (((*p)[i] = new int[size]) == NULL)
{
res = 0;
break;
}
}
} while (0);
if (res == 1)
{
res = size;
cout << "矩阵初始化完成";
}
else
{
cout << "矩阵构建失败";
}
return res;
}
void matrix_deint(int **p,int size)
{
for (int i = 0; i < size; i++)
{
delete []p[i];
}
delete []p;
}
void matrix_create(int **matrix, int n)
{
int k = 0; //标记第几圈
int sum = 1;
int i, j;
int threshold = 0;
threshold = n * n;
while (1)
{
//顶行
for (i = k; i < n - k && threshold >= sum; i++, sum++)
{
matrix[k][i] = sum;
}
//尾列
for (i = k + 1; i < n - k && threshold >= sum; i++, sum++)
{
matrix[i][n - k - 1] = sum;
}
//底行
for (i = n - k - 1 - 1; i >= k && threshold >= sum; i--, sum++)
{
matrix[n - k - 1][i] = sum;
}
//首列
for (i = n - k - 1 - 1; i > k && threshold >= sum; i--, sum++)
{
matrix[i][k] = sum;
}
k++;
if (threshold < sum)
{
printf("\n旋转矩阵构建完成\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%3d", matrix[i][j]);
}
printf("\n");
}
break;
}
}
}
int main()
{
int n = 0;
int **matrix = NULL;
if (!(n = matrix_init(&matrix)))
{
return 0;
}
matrix_create(matrix, n);
matrix_deint(matrix,n);
return 0;
}
运行结果: