C语言题目:二维数组查找指定元素

在二维数组中查找这样的数,它所在的行的平均值最大,所在列的平均值最小。

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include<stdio.h>

int main()
{
    int a[4][4] = {
        8,7,4,5,
        5,6,3,1,
        9,5,9,4,
        8,3,6,7
    };
    int x,y,i,j,s,max=-999999,min=999999;
    float avg;
    for (i = 0; i < 4; i++)
    {
        s = 0;
        for (j = 0; j < 4; j++)
            s += a[i][j];
        avg = s / 4.0;
        if (avg>max){
            max = avg;
            x = i;
        }
    }
    for (i = 0; i < 4; i++)
    {
        s = 0;
        for (j = 0; j < 4; j++)
            s += a[j][i];
        avg = s / 4.0;
        if (avg<min){
            min = avg;
            y = i;
        }
    }
    printf("x=%d\n",x);
    printf("y=%d\n",y);
    printf("a[x][y]=%d\n",a[x][y]);
    return 0;

}

img

参考一下实现鞍点的代码:

#include "stdio.h"
void main()
{
    /*
        电子书7.8
    */
    int a[4][4]={
            {1,    2,    3,    4},
            {5,    6,    7,    8},
            {9,    10,    11,    12},
            {13,14,    15,    16}
    };
    int i,j,k;
    int flag=0;
    int flag2=0;
    for(i=0;i<4;i++){
        for(j=0;j<4;j++)
        {
            flag=0;
            flag2=0;
            //按行找,是不是最大
            for(k=0;k<4;k++)
            {
                if(a[i][j]<a[i][k]){
                    flag=1; //不是最大
                    break;
                }
            }
            //按列找,是不是最小
            for(k=0;k<4;k++)
            {
                if(a[i][j]>a[k][j]){
                    flag2=1; //不是最小
                    break;        
                }    
            }
            if(flag==0 && flag2==0){
                
                printf("%d是鞍点\n",a[i][j]);
            }
        }    
    }
}