找出3X4矩阵中每列的最小元素及其所在的行号,
答案如下:
#include "stdio.h"
void findmin(int a[ ][4],int ln[4])
{ int i,j,t;
for(i=0;i<4;i++) /* i作为列下标 */
{ t=0;
for(j=1;j<3;j++) /* 第i列中,第t行与第j行元素逐一比较 */
if(a[j][i]<a[t][i]) t=j; // t用来表示每次比较中小值元素所在的行号
ln[i]=t; } // 第i列中最小元素所在的行号赋予数组元素ln[i]
}
void main( )
{ int i,j;
int s[3][4]={{23,87,10,44},{91,66,24,5},{65,40,9,63}};
int lmin[4]; /* 存放每列最小元素所在的行号 */
findmin(s,lmin);
printf("min & line number:\n ");
for(i=0;i<4;i++)
{ j=lmin[i];//这里为什么一定要用到j,加入最后一句换成如下:
printf("%3d of line %d \n",s[j][i],j);
}
}
上面为什么一定要用到j,假如最后一句换成如下:
for(i=0;i<4;i++)
{ printf("%3d of line %d \n",s[j][i],lmin[i]);//这样把j省略掉就出错了。为什么?
}