螺旋矩阵使用c程序

时间:2015-06-08 10:25:01

标签: c++ matrix spiral

我编写了一个以螺旋形式打印矩阵的程序,但它只适用于3 * 3。如何使它对所有维度都有用。

#include<iostream.h>
#include<conio.h>
void main()
{
    int i,j,k=1,l=0;
    int n;
    clrscr();
    cout<<"Enter the number of row : ";
    cin>>n;
    int a[3][3];
    cout<<"Matrix Form : "<<"\n";
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            a[i][j]=i*n+(j+1);
            cout<<a[i][j]<<"\t";
        }
        cout<<"\n";
    }
    cout<<"Spiral form"<<"\n";
    for(i=k;i<n;i++)
    {
        cout<<a[k][i]<<"\t";
    }
    k++;
    for(i=k;i>=0;i--)
    {
        cout<<a[k][i]<<"\t";
    }
    k--;
    for(i=k;i>=0;i--)
    {
        cout<<a[i][l]<<"\t";
    }
    for(i=k;i<n;i++)
    {
        cout<<a[l][i]<<"\t";
    }

    getch();
}

2 个答案:

答案 0 :(得分:0)

假设代码正在运行,您需要对此行采取行动:

int a[3][3];

最简单的方法是使用C ++ std::vector

std::vector<std::vector<int> > a(n, std::vector<int>(n));

请记住#include <vector>

答案 1 :(得分:0)

我试图通过使用数组中行和列的递增和递减来使用c生成3 * 3螺旋矩阵,然后找出矩阵的主对角线和对角线的总和。 我的代码如下

#include<stdio.h>
#define n 3   
int main()
{
int m=n/2,i,j,a[10][10],c=1,sum=0,s=0;
for(i=m,j=m;j<n;j++)
{
          a[i][j]=c;
          c++;
       }
       j--;
       i++;
       while(j>=0)
       {
           a[i][j]=c;
           c++;
           j--;
       }
       i--;
       j++;
       a:
  if(i>=0)
  {
       a[i][j]=c;
       c++;
       i--;
   goto a;
  }
       i++;
       j++;
       b:
       if(j<n)
       {
       a[i][j]=c;
       c++;
       j++;
       goto b;
       }
for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
        printf("\t%d",a[i][j]);

    }printf("\n");
}
for (i = 0; i <n; i++)
        {
            sum = sum + a[i][i];
            s=s+a[i][n-i-1];
        }
        printf("sum of diagonals is d1: %d d2: %d d1+d2: %d",sum,s,s+sum);
return 0;
}

输出: click here to view output