运行结果不显示任何数字

想运行一个螺旋矩阵的程序,没有报错但是运行没有结果输出,感觉是传参的时候出了问题,有人能帮我看看吗?

#include
#define N 100

int rmatrix[N][N]={0};
void RMATRIX(int n,int start, int number,int rmatrix[N][N]){//n为矩阵层数,start为矩阵开始层数,number为起始数字
    int i;
    if(n==1)
        rmatrix[start][start]=number;
    else{
        for(i=start;i<(n-1);i++){//A区(矩阵的第一列)
            rmatrix[i][start]=number;
            number++;
        }
        for(i=start;i<(n-1);i++){//B区(矩阵的最后一行)
            rmatrix[n-1][i]=number;
            number++;
        }
        for(i=(n-1);i>start;i--){//C区(矩阵最后一列)
            rmatrix[i][n-1]=number;
            number++;
        }
        for(i=(n-1);i>start;i--){
            rmatrix[start][i]=number;
            number++;
        }
        start++;
        RMATRIX(n-2,start,number,rmatrix);
    }
}

void main(){
    int a,b;
    int n,number;
    int rmatrix[N][N];
    printf("请输入矩阵阶数:");
    scanf("%d",&n);
    printf("请输入开始时的number:");
    scanf("%d",&number);
    RMATRIX(n,0,number,rmatrix);
    for(a=0;a<4;a++){
        for(b=0;b<4;b++){
            printf("%d ",rmatrix[a][b]);
        }
        printf("\n");
    }
}

这个可以吗,如果可以记得给个采纳呐

#include<stdio.h>
#define N 100
 
int rmatrix[N][N]={0};
int number1;//number的初始值 
void RMATRIX(int n,int start, int number,int rmatrix[N][N]){//n为矩阵层数,start为矩阵开始层数,number为起始数字
    int i;
    if(n<1)return;
//    printf("此时的n=%d,start = %d,number = %d\n",n,start,number);

    if(n==1)
    {
        if(number1==number)
        {
            rmatrix[start][start]  = number;
            return ;
        }
//        rmatrix[start][start] = number;
        int t= start/2;
//        printf("t = %d\n",t);
        if(rmatrix[t][t] == 0)
        {
            rmatrix[t][t]  = number;
        }
        return;
    }
    else{
        for(i=start;i<(n-1);i++){//A区(矩阵的第一列)
            rmatrix[i][start]=number;
            number++;
        }
        for(i=start;i<(n-1);i++){//B区(矩阵的最后一行)
            rmatrix[n-1][i]=number;
            number++;
        }
        for(i=(n-1);i>start;i--){//C区(矩阵最后一列)
            rmatrix[i][n-1]=number;
            number++;
        }
        for(i=(n-1);i>start;i--){
            rmatrix[start][i]=number;
            number++;
        }
        start++;
        RMATRIX(n-1,start,number,rmatrix);
    }
}
 
int main(){
    int a,b;
    int n,number;
    int rmatrix[N][N];
    printf("请输入矩阵阶数:");
    scanf("%d",&n);
    printf("请输入开始时的number:");
    scanf("%d",&number);
    number1 = number;
    RMATRIX(n,0,number,rmatrix);
    for(a=0;a<n;a++){
        for(b=0;b<n;b++){
            printf("%3d ",rmatrix[a][b]);
        }
        printf("\n");
    }
}
 

img

这个 rmatrix 定义了两个地方,一个全局变量,一个main函数有一个, 先去掉一个试试,有问题再讨论讨论

改了三处
一个是将void main()改为int main(),否则我的编译器会报错
其二是将最末尾的两个for语句中的<4改为<n,否则输出的阶数是固定的

#include<stdio.h>
#define N 100
 
int rmatrix[N][N]={0};
void RMATRIX(int n,int start, int number,int rmatrix[N][N]){//n为矩阵层数,start为矩阵开始层数,number为起始数字
    int i;
    if(n==1)
        rmatrix[start][start]=number;
    else{
        for(i=start;i<(n-1);i++){//A区(矩阵的第一列)
            rmatrix[i][start]=number;
            number++;
        }
        for(i=start;i<(n-1);i++){//B区(矩阵的最后一行)
            rmatrix[n-1][i]=number;
            number++;
        }
        for(i=(n-1);i>start;i--){//C区(矩阵最后一列)
            rmatrix[i][n-1]=number;
            number++;
        }
        for(i=(n-1);i>start;i--){
            rmatrix[start][i]=number;
            number++;
        }
        start++;
        RMATRIX(n-2,start,number,rmatrix);
    }
}
 
int main(){
    int a,b;
    int n,number;
    int rmatrix[N][N];
    printf("请输入矩阵阶数:");
    scanf("%d",&n);
    printf("请输入开始时的number:");
    scanf("%d",&number);
    RMATRIX(n,0,number,rmatrix);
    for(a=0;a<n;a++){
        for(b=0;b<n;b++){
            printf("%d ",rmatrix[a][b]);
        }
        printf("\n");
    }
}