编写函数,求出一个二维数组中各行最大值中最小的数及其下标,求出各列最小值中最大的数及其下标。在main函数中验证。要求:二维数组的行数、列数、数组元素均在main函数中由键盘输入。

#include <stdio.h>
void main()
{
int a = 0, b = 0,i=0,j=0,array1[a][b],array2[b];
int array2[b];
printf("请输入数组行数\n");
scanf("%d", &a);
printf("请输入数组列数\n");
scanf("%d", &b);

for (i = 0; i < a; i++)
{
    for ( j = 0; j < b; j++)
    {
        printf("请输入第%d行%d列元素:\n", i+1,j+1);
        scanf("%d", &array1[i][j]);
    }
}
printf("\n====输入完毕====\n");

int max;
for (int j = 0; j < b; j++)
{
    max = 0;
    for (int i = 0; i < a; i++)
    {
        if (max<array1[i][j]) max=array1[i][j];
    }
    array2[j] = max;
}
printf("\narray1:\n");
for (int i = 0; i < a; i++)
{
    printf("\n");
    for (int j = 0; j < b; j++)
    {
        printf("%d\t",array1[i][j]);
    }
}
printf("\narray2\n");
for (int i = 0; i < b; i++)
{
    printf("%d\t",array2[i]);
}

}


#include <stdio.h>
#include<stdlib.h>
void main()
{
    int a = 0, b = 0, i = 0, j = 0;
    printf("请输入数组行数\n");
    scanf("%d", &a);
    printf("请输入数组列数\n");
    scanf("%d", &b);

    int**array = (int**)malloc(sizeof(int*)*a);
    for (i = 0; i < b; i++)
        array[i] = malloc(sizeof(sizeof(int)*b));

    for (i = 0; i < a; i++)
    {
        for (j = 0; j < b; j++)
        {
            printf("请输入第%d行%d列元素:\n", i + 1, j + 1);
            scanf("%d", &array[i][j]);
        }
    }
    printf("\n====输入完毕====\n");

    int maxi,maxj=0,mini=0,minj, x, y,x_i,y_j;
    for (i = 0; i < a; i++)
    {
        maxi = 0;
        for (j = 0; j < b; j++)
        {
            if (maxi < array[i][j])
            {
                maxi = array[i][j];
                x = i;
                y = j;
            }
        }
        if (!mini || mini > maxi)
        {
            mini = maxi;
            x_i = x;
            y_j = y;
        }
    }
    printf("各行最大之最小为%d,下标%d %d\n", mini, x_i, y_j);
    for (i = 0; i < b; i++)
    {
        minj = INT_MAX;
        for (j = 0; j < a; j++)
        {
            if (minj >array[j][i])
            {
                minj = array[j][i];
                x = j;
                y = i;
            }
        }
        if (!maxj || maxj < minj)
        {
            maxj = minj;
            x_i = x;
            y_j = y;
        }
    }
    printf("各列最小之最大为%d,下标%d %d\n", maxj, x_i, y_j);
}