N维世界 2023-12-02 20:49 采纳率: 90%
浏览 1
已结题

跟我想要的结果不一样是咋回事

#include <stdio.h>
void main()
{
    int i,j;
    int a[3][3];
    for(i=0;i<=3;i++){
        for(j=0;j<=3;j++){
        if(i==j){
        a[i][j]=1;
        //printf("j=%d\n",j);
    }
        else if(i==j-1){
        a[i][j]=2;
        //printf("j=%d\n",j);
    }
        else if(i==j-2){
        a[i][j]=3;
        //printf("j=%d\n",j);
    }
        else if(i==j-3){
        a[i][j]=4;
        //printf("j=%d\n",j);
    }
        else{
        a[i][j]=5; 
        //printf("j=%d\n",j);
    }
    //    printf("a[%d][%d]=%d\n",i,j,a[i][j]);
    }
    }
    for(i=0;i<=3;i++){
    for(j=0;j<=3;j++)
    printf("%d\t",a[i][j]);
    printf("\n");
}
}

dev结果是
1 2 3 5
5 1 2 5
5 5 1 5
5 1 3 10359696
我想要的是
1 2 3 4
5 1 2 3
5 5 1 2
5 5 5 1

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-02 22:38
    关注

    【以下回答由 GPT 生成】

    #include <stdio.h>
    void main()
    {
        int i,j;
        int a[4][4]; // 修改数组大小为4x4
        for(i=0;i<4;i++){ // 修改循环条件为i<4
            for(j=0;j<4;j++){ // 修改循环条件为j<4
                if(i==j){
                    a[i][j]=1;
                }
                else if(i==j-1){
                    a[i][j]=2;
                }
                else if(i==j-2){
                    a[i][j]=3;
                }
                else if(i==j-3){
                    a[i][j]=4;
                }
                else{
                    a[i][j]=5; 
                }
            }
        }
        for(i=0;i<4;i++){ // 修改循环条件为i<4
            for(j=0;j<4;j++){ // 修改循环条件为j<4
                printf("%d\t",a[i][j]);
            }
            printf("\n");
        }
    }
    

    根本问题是数组a的大小是3x3,但是代码中的循环条件i<=3和j<=3会导致数组越界访问,需要将数组大小修改为4x4,同时修改循环条件为i<4和j<4。这样才能得到期望的结果。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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