icsad 2022-10-09 18:44 采纳率: 87.5%
浏览 68
已结题

运行结果不显示任何数字

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

#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);
    }
}

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");
    }
}

  • 写回答

3条回答 默认 最新

  • 游坦之 全栈领域优质创作者 2022-10-09 19:23
    关注

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

    #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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 已采纳回答 10月10日
  • 创建了问题 10月9日

悬赏问题

  • ¥15 算法题:连接所以点,找两条无交叉,且长度最接近的线
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进