亲萌,c语言求助 题目:对于一个如图片1所示4乘3的矩阵a,找出其中最大值max及该值所在位置(m

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-04
c语言 写一个4×4矩阵,找出其中最大值最小值 和最大最小值的位标。

#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 );
}