问题在图片上
输出的是这个结果
求解这几个问题,实在不明白,感谢
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;
}