C语言数组循环问题
#include<stdio.h>#include<stdlib.h>intmain(){inta[][3]={1,2,3,4,5,6};intb[3][2],i,j;p...
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[][3]={1,2,3,4,5,6};
int b[3][2],i,j;
printf("array 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("array b:\n");
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
printf("%5d",b[j][i]);
printf("\n");}
system("pause");
return 0;
}
结果正常,但 b[j][i]=a[i][j];改为b[i][j]=a[j][i],b[2][0]和b[2][1]不正常,其他正常,是为什么 展开
#include<stdlib.h>
int main()
{
int a[][3]={1,2,3,4,5,6};
int b[3][2],i,j;
printf("array 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("array b:\n");
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
printf("%5d",b[j][i]);
printf("\n");}
system("pause");
return 0;
}
结果正常,但 b[j][i]=a[i][j];改为b[i][j]=a[j][i],b[2][0]和b[2][1]不正常,其他正常,是为什么 展开
4个回答
展开全部
你原来的程序就是有问题的,运行结果:
b没有正确显示
改成:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[][3]={1,2,3,4,5,6};
int b[3][2],i,j;
printf("array 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("array b:\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
//二行三列的A行列互置赋给B是三行二列,所以i是行下标,j是列下标,你弄反了
printf("%5d",b[i][j]);
printf("\n");
}
system("pause");
return 0;
}
b正常显示了
行列互置的时候,a[i][j]对应b[j][i],如果你发现对应的值不对了,那说明下标就是有问题。
至于你说的有些值没正常显示,那是因为你没有给他们初始化,所以显示的是个伪随机数,在你看来就是不正常的数据。
展开全部
这是对矩阵进行转置操作
转置操作是通过将a[i][j]赋值给b[j][i]进行的。
改为b[i][j]=a[j][i],b[2][0]和b[2][1] 对应的矩阵行列数目不对,肯定会出现问题。a矩阵是2行3列,b[i][j]=a[j][i]这样子的话,a[j][i]是3行2列,会出错。
转置操作是通过将a[i][j]赋值给b[j][i]进行的。
改为b[i][j]=a[j][i],b[2][0]和b[2][1] 对应的矩阵行列数目不对,肯定会出现问题。a矩阵是2行3列,b[i][j]=a[j][i]这样子的话,a[j][i]是3行2列,会出错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里是因为你通过转置之后,B矩阵变成了B[2][3],并且上面的赋值语句也就不对了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样写原本就不对吧,j可以到2,那么a[2][0],a[2][1]算什么,不越界了吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询