专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

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

发布时间:2011-06-28 16:16:45 文章来源:www.iduyao.cn 采编人员:星星草
二维数组行和列元素互换,哪里错了,新手求指导?
#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;
        }
    }
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: