首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

二维数组行和列元素互换,错哪了,新手求指导

2012-02-10 
二维数组行和列元素互换,哪里错了,新手求指导?#include stdio.hvoid main(){int a[2][3]{{1,2,3},{4,5,

二维数组行和列元素互换,哪里错了,新手求指导?
#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;        }    } 

热点排行