以螺旋方式打印矩阵的程序.(工作不好)

program which print a matrix in spiral way. ( is not working fine)

本文关键字:工作 程序 螺旋 式打印      更新时间:2023-10-16

我需要编写一个程序,以螺旋方式显示矩阵的元素。我的程序运行不好。这是代码:

#include <iostream>
using namespace std;
void citireMatrice(int a[100][100], int n) // function to read a matrix
{
int i, j;
for (i = 0; i < n; ++i)
{
for (j = 0; j < n; ++j)
{
cout<<"a[" << i << "][" << j << "]=";
cin >> a[i][j];
}
}
}
void spiral(int a[100][100], int n)
{
int i, j, k;
if (n % 2==0)
{
k = n / 2;
}
else
{
k = n / 2 + 1;
}
for (i = 1; i <= k; ++i)
{
for (j = 1; j <= n - i + 1; ++j)
{
cout << a[i][j] << " ";
}
for (j = i + 1; j <= n - i + 1; ++j)
{
cout << a[j][n - i + 1] << " ";
}
for (j = n-i; j >= i; j--)
{
cout << a[n - i + 1][j] << " ";
}
for (j = n-1;j>=i+1;j--)
{
cout << a[j][i];
}
}
}
int main()
{
int a[100][100];
int n;
cout << "n=";
cin >> n;
citireMatrice(a, n);
spiral(a, n);
return 0;
}

如果输入n=2和元素1、2、3、4,它将显示4-858993460和其他类似的数字。我的错在哪里?

citireMatrice中正确地使用了基于零的数组索引,但在spiral中使用了基于一的索引。

您需要从0开始循环,并在< n结束循环。(考虑a的哪个元素将首先打印出来。(