#include <stdio.h>
void main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int t,i,j;
printf("The array a:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
printf("The array b:\n");
for(j=0;j<3;j++) //这边开始应该错了,该怎么改//
{
for(i=0;i<2;i++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
for(i=0;i<3;i++)
for(j=0;j<2;j++)
printf("%d",a[i][j]);
printf("\n");
}
这段代码哪里有错,
------解决方案--------------------
首先你定义了一个2行3列的数组,他是不能存储3行2列的东西的,否则越界,所以你还要定义一个新数组int b[3][2]={0};来存储转换后的
------解决方案--------------------
- C/C++ code
#include <stdio.h> void main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2];//原来的访问数组越界楼 a[2][3] 没有 a[3][0] a[3][1]的空间 int i,j; printf("The array a:\n"); for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("%d",a[i][j]); printf("\n"); } printf("The array b:\n"); for(i=0;i<3;i++) //这边开始应该错了,该怎么改// { for(j=0;j<2;j++) { b[i][j]=a[j][i]; } } for(i=0;i<3;i++) { for(j=0;j<2;j++) printf("%d",b[i][j]); printf("\n"); } }
------解决方案--------------------
把a定义为一个行和列都相等的,即a[3][3],然后,下边
- C/C++ code
for(j=0;j<3;j++) //这边开始应该错了,该怎么改// { for(i=j;i<3;i++) { t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } }