当前位置: 代码迷 >> C语言 >> [求助]关于距阵问题请大家帮下忙谢谢!
  详细解决方案

[求助]关于距阵问题请大家帮下忙谢谢!

热度:102   发布时间:2007-11-03 09:50:45.0
[求助]关于距阵问题请大家帮下忙谢谢!

#include<stdio.h>
main()
{int i,j,t,a[4][4]={35,73,65,50,33,47,66,28,42,19,25,60,30,72,54,26};
printf("输出矩阵:\n");
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n");}
for(i=0;i<4;i++)
for(j=0;j<i;j++) 为什么这里的(i<j)是什么意思呢请详解谢谢!
{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}
printf("输出转置矩阵:\n");
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n");}
}
搜索更多相关的解决方案: int  main  include  

----------------解决方案--------------------------------------------------------

就是第2个循环受第1个循环的约束 第1个循环当i=1第2个循环就循环2次 i=2就第2个就循环3次 i=3第2个循环就循环4次
心理清楚 很难解释了....
这种循环语法很实用


----------------解决方案--------------------------------------------------------
“t=a[i][j];a[i][j]=a[j][i];a[j][i]=t”已经保证矩阵对角线对称的数互换位置了。。。。。。。
----------------解决方案--------------------------------------------------------
     有点悬........
----------------解决方案--------------------------------------------------------

不是很懂请大家详细点
这里输出的结果是:35 73 65 50
33 47 66 28
42 19 25 60
30 72 54 26
程序运行结果是: 35 33 42 30
73 47 19 72
65 66 25 54
50 28 60 26


----------------解决方案--------------------------------------------------------

for(i=0,i<4,i++)
for(j=0,j<i,j++)
为什么是j<i而不是j<4


----------------解决方案--------------------------------------------------------
难道你不知道转置矩阵吗???高等代数的东西,改成i&lt;4你自己仔细看看是在干什么,想想就明白了
----------------解决方案--------------------------------------------------------

我怎么也觉得应该是for(j=0;j<4;j++),而不是i啊。 求解?


----------------解决方案--------------------------------------------------------
for(j=0;j<i;j++)已经保证了矩阵的转置,只不过对角线上的数未动而已。
若是for(i=0;i<4;i++)与for(j=0;j<4;j++)嵌套,举个例子吧:i=1,j=3时a[1][3]与a[3][1]互换了一次,而之后又会遇到i=3,j=1,a[3][1]与a[1][3]会再次互换,也就是说,矩阵被两次转置,还原回来了!
----------------解决方案--------------------------------------------------------
建议:LZ注意写作风格
----------------解决方案--------------------------------------------------------
  相关解决方案