C语言c++矩阵构造

img

运行结果如下:

img

C代码如下:


#include <stdio.h>
#define N 100
void fun(int a[][N],int n,int v,int k=0)
{
    int i,j;
    if(n == 1)
        a[k][k] = v;
    else
    {
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(i==0 || i==n-1 || j==0 || j==n-1)
                    a[k+i][k+j] = v;
            }
        }
        fun(a,n-2,v+1,k+1);
    }
}

int main()
{
    int a[N][N];
    int i,j,n;
    scanf("%d",&n);
    fun(a,n,1);
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            if(j<n-1)
                printf("%d ",a[i][j]);
            else
                printf("%d\n",a[i][j]);
        }
        
    }
    return 0;
}

C++代码:

#include <iostream>
using namespace std;
#define N 100
void fun(int a[][N],int n,int v,int k=0)
{
    int i,j;
    if(n == 1)
        a[k][k] = v;
    else
    {
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(i==0 || i==n-1 || j==0 || j==n-1)
                    a[k+i][k+j] = v;
            }
        }
        fun(a,n-2,v+1,k+1);
    }
}

int main()
{
    int a[N][N];
    int i,j,n;
    cin >> n;//scanf("%d",&n);
    fun(a,n,1);
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            if(j<n-1)
                cout << a[i][j]<<" ";//printf("%d ",a[i][j]);
            else
                cout << a[i][j]<<endl;//;printf("%d\n",a[i][j]);
        }
        
    }
    return 0;
}


int main()
{
    int n;
    scanf("%d",&n);
    
    for(int i=1;i<=n-n/2;++i)
    {
        int temp=1;
        for(int j=1;j<=n;++j)
        {
            printf("%d ",temp);
            if(j<i) ++temp;
            else if(j>n-i) --temp;
        }
        printf("\n");
    }
    
    for(int i=n/2;i>=1;--i)
    {
        int temp=1;
        for(int j=1;j<=n;++j)
        {
            printf("%d ",temp);
            if(j<i) ++temp;
            else if(j>n-i) --temp;
            
        }
        printf("\n");
    }
    
    return 0;
}