很简单的c语言二维数组转置距阵问题,帮忙回答下

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:07:15
#include<stdio.h>
void main()
{int i,j,t,a[4][4]={{1,2,3,4},{5,6,7,8},{4,3,2,1},{1,2,3,4}}
for(i=0;i<4;i++)
for(j=0;j<i;j++)
if(a[i][j]>a[j][i])
{t=a[i][j];a[j][i]=a[i][j];a[j][i]=t;}
for(i=0;i<4;i++)
{printf("\n");
for(j=0;j<4;j++)
printf("%d",a[i][j]);}
我觉得功能是如果右上角元素比左下角大,则调换;
但事实上是左下角比右上角大则调换;
为什么啊?????

嗯,楼上说的对。比如当进第二个for循环时的i=1,j=0,则他比较a[1][0]和a[0][1],就是用左下角对右上角。其实平时如果要找某些错误,可以自己试着带几次值进去算算,就明白的。^^

if(a[i][j]>a[j][i])
因为i>j
所以a[i][j]指的是左下角,a[j][i]是右上角
要达到你的功能只要把大于号改成小于