m0_62055949 2021-11-08 22:33 采纳率: 91.7%
浏览 28
已结题

二维数组行列互换遇到n个问题

问题在图片上

img


输出的是这个结果

img

求解这几个问题,实在不明白,感谢

  • 写回答

2条回答 默认 最新

  • 树下等苹果 2021-11-09 12:56
    关注

    1、第一个for循环不能改成for(i=1;i<=2;i++)
    原因:定义的数组a[2][3]是两行数组,行号编号从0到1。即只存在a[0][],和a[1][]。不存在a[2][*]。如果改成你的那种,那么在下面的语句printf(“%5d”,a[i][j])将会出现a[2][3]。这是不存在的,会出现数组出界问题。
    2、b[j][i]=a[i][j]。是将a数组中的值行列转换复制到b数组中。没有规定i,j控制行或列。这看你的写法,多练习你就会懂得。
    3、有两层for循环,换行符都是放在内层循环结束之后的。你后面那个换行符也是在内层循环结束之后的。内层循环到printf(“%5d”,b[i][j])就结束了。
    4、最后说一点,你的代码这样写稍微有点乱,不过也用不着过多忧虑,刚写代码都会经历这个阶段。最好对齐,这样也不容易出错。像我下面这样写会规范一点:

    
    #include<stdio.h>
    int main()
    {
        int a[2][3] = { {1,2,3},{4,5,6} };
        int b[3][2], i, j;
        printf("a:\n");
        for (i = 0; i <2; i++)    //输出两行
        {
            for (j = 0; j < 3; j++)        //输出三列
            {
                printf("% 5d", a[i][j]);
                b[j][i] = a[i][j];
            }
            printf("\n");   //在内层循环结束后换行,将剩下的写到下一行
        }
        printf("\n");
        for (i = 0; i < 3; i++)    //输出三行
        {
            for (j = 0; j < 2; j++)        //输出两列
            {
                printf("% 5d", b[i][j]);
            }
            printf("\n");   //在内层循环结束后换行,将剩下的写到下一行
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。