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

问题在图片上

img


输出的是这个结果

img

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

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

你这个问题解决办法就是要么上课认真听讲做好笔记,要么把教材逐字逐句的认真读一遍。