亲萌,c语言求助 题目:对于一个如图片1所示4乘3的矩阵a,找出其中最大值max及该值所在位置(m
#include#include#include typedef struct Location{int x;int y;}LOC;int main(void){LOC min,max;int nMax,nMin;int a[4][4]={1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16};nMax=nMin=a[0][0];for (int i=0;i=a[i][j]){nMin=a[i][j];min.x=i;min.y=j;}}printf("最小值为:%d,最小值位标为:[%d,%d]
",nMin,min.x,min.y);printf("最大值为:%d,最大值位标为:[%d,%d]",nMax,max.x,max.y);return 0;}
因为max最终放的是最大的值,所以用判断语句判断max是否小于a[i][j],如果max 小的话,就说明原来赋给max的值不是最大值,有一个值比它大,那么,就要把这个大赋给max,循环完后,max就与所以的值都比了一次,找到了最大的。
比如我有3个数,找出一个最大的。
int a[2]={1,2,3,} //数组a[0]=1,a[1]=2,a[2]=3
max=a[1] //max=1
if (max<a[2]) max=a[2] 因为max 原来的值等于1,小于a[2],所以,现在要把大的数a[2]给max
if(max<a[3]) max=a[3] 因max原来的值等于2了,小于a[3],所以,现在要把大的数a[3]给max
最后max里放的是最大的数。即a[3]的值3。
另外,a[i][j]中的i 和j 是循环中的变量,i 对第几行,j 对应第几列。所以只要找到最大值,就用其它变量保存,那么就知道了该数的i 和 j ,即最大值所在的行号和列号。
main()
{
int a[4][3], i,j, max, m,n;
for( i=0;i<4;i++ )
for( j=0;j<3;j++ )
scanf( "%d", &a[i][j] ); //输入12个数
max=a[0][0];
m=n=0; //先假定第一个数是最大的,m、n是该数的下标
for( i=0;i<4;i++ )
for( j=0;j<3;j++ )
if ( max < a[i][j] ) //查找最大的数,并记录下其下标值
{
max=a[i][j];
m=i;n=j;
}
printf("max=%d row=%d col=%d", max, m, n );
}