C语言3*3二维数组行和列互换
#include<stdio.h>intmain(){inta[3][3];inti,j,t;for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(...
# include <stdio.h>
int main ()
{
int a[3][3];
int i,j,t;
for (i=0; i<3; i++)
for (j=0; j<3; j++)
scanf ("%d",&a[i][j]);
for (i=0; i<3; i++)
for (j=0; j<3; j++)
if ((i+j) == 1 || (i+j) == 2 || (i+j) == 3 )
{ t = a[i][j];
a[i][j]= a[j][i];
a[j][i]= t;
}
for (i=0; i<3; i++)
for (j=0; j<3; j++)
{
printf ("%d",a[j][i]); //这句为什么是a[j][i],而不是a[i][j];
if (j == 2)
printf ("\n");
}
return 0;
}
我的问题是最后输出的时候,“printf ("%d",a[j][i]); //这句为什么是a[j][i],而不是a[i][j];” 展开
int main ()
{
int a[3][3];
int i,j,t;
for (i=0; i<3; i++)
for (j=0; j<3; j++)
scanf ("%d",&a[i][j]);
for (i=0; i<3; i++)
for (j=0; j<3; j++)
if ((i+j) == 1 || (i+j) == 2 || (i+j) == 3 )
{ t = a[i][j];
a[i][j]= a[j][i];
a[j][i]= t;
}
for (i=0; i<3; i++)
for (j=0; j<3; j++)
{
printf ("%d",a[j][i]); //这句为什么是a[j][i],而不是a[i][j];
if (j == 2)
printf ("\n");
}
return 0;
}
我的问题是最后输出的时候,“printf ("%d",a[j][i]); //这句为什么是a[j][i],而不是a[i][j];” 展开
2个回答
展开全部
首先,你的程序逻辑有问题,在交换的时候,所有以对角线为中心的对称元素交换了两次,相当于没有交换;所以如果换成a[i][j]输出的话,结果与没有交换前的一样。即使,你把中间交换元素的那部分代码删去,最后用a[j][i],输出的结果感觉是交换了,其实在内存中(数组中)其实并没有交换。
我帮你改正后的代码如下,改正过的地方前边已做注释:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int a[3][3];
int i,j,t;
for (i=0; i<3; i++)
for (j=0; j<3; j++)
scanf ("%d",&a[i][j]);
for (i=0; i<3; i++)
//fixed: j = i + 1
for (j=i+1; j<3; j++)
//fixed: delete if
{ t = a[i][j];
a[i][j]= a[j][i];
a[j][i]= t;
}
for (i=0; i<3; i++)
for (j=0; j<3; j++)
{
//fixed: used a[i][j]
printf ("%d ",a[i][j]); //这句为什么是a[j][i],而不是a[i][j];
if (j == 2)
printf ("\n");
}
system("pause");
return 0;
}
我帮你改正后的代码如下,改正过的地方前边已做注释:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int a[3][3];
int i,j,t;
for (i=0; i<3; i++)
for (j=0; j<3; j++)
scanf ("%d",&a[i][j]);
for (i=0; i<3; i++)
//fixed: j = i + 1
for (j=i+1; j<3; j++)
//fixed: delete if
{ t = a[i][j];
a[i][j]= a[j][i];
a[j][i]= t;
}
for (i=0; i<3; i++)
for (j=0; j<3; j++)
{
//fixed: used a[i][j]
printf ("%d ",a[i][j]); //这句为什么是a[j][i],而不是a[i][j];
if (j == 2)
printf ("\n");
}
system("pause");
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询