螺旋矩阵使用c程序

spiral matrix using c program

本文关键字:程序 螺旋      更新时间:2023-10-16

我已经编写了一个程序来打印螺旋形式的矩阵,但它只适用于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();
}

假设代码正在工作,则需要对以下行执行操作:

int a[3][3];

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

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

还记得#include <vector>

我试图通过使用数组中行和列的增量和减量,使用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;
}

输出:单击此处查看输出