用 C 编写一个程序,根据 运行 次整数输入创建一个 m×n 阶矩阵 A,并找到所有元素 A[i][j] 使得:

Write a program in C to create a matrix A of order m×n based on run-time integer inputs and find all elements A[i][j] such that:

用C编写一个程序,根据运行次整数输入创建m×n阶矩阵A,并找到所有元素A[i][j],使得它在第i个中最小行和第 j 列中最大的。 我是 C 的新手,我已经为它编写了代码,但它不起作用。

#include <stdio.h>

int main()
{
    int m,n,min,max;
    printf("Let the matrix be m x n\n Enter the value of m:");
    scanf("%d",&m);
    printf("Enter the value of n: ");
    scanf("%d",&n);
    int array1 [m][n];
    int min_i [m] ;
    int min_i_value [m] ;
    int max_j [n] ;
    int max_j_value [n] ;
    printf("Enter elements in the matrix");

    for (int i=0; i<m; ++i){//taking input for matrix
        for(int j=0;j<n;++j){
            scanf("%d", &array1[i][j]);
        }
    }
    for(int i=0;i<m;++i){
        array1[i][0]=min;//calculating min value in a row
        for(int j=0;j<n;++j){
            if (array1[i][j]<min){
                array1[i][j]=min;
            }
        }
        min_i_value[i]=min;//putting the min value in array
        for (int j=0;j<n;++j){
            if (array1[i][j]==min){
                min_i[i]=j;//putting the index of min value in array
            }
        }
    }
    for(int j=0;j<n;++j){
        array1[0][j] = max;
        for(int i=0;i<m;i++){
            if (array1[i][j]>max){
                array1[i][j]=max;
                
            }
            
        }
        max_j_value [j] = max;
        for(int i=0;i<m;i++){
            if (array1[i][j]==max){
                max_j [j] = i;
            }
        }
    }
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            if(min_i_value[i]==max_j_value[j]){
                printf("%d,(%d,%d)\n",max_j_value[j],min_i[i],max_j[j]);
                
            }
        }
    }
    
    
    return 0;
}

它返回 0(0,2),我不明白为什么。

您没有正确计算行和列的最小值和最大值。你的分配应该被撤销。

        array1[i][0]=min;//calculating min value in a row
        for(int j=0;j<n;++j){
            if (array1[i][j]<min){
                array1[i][j]=min;
            }
        }

应该是

        min = array1[i][0];
        for(int j=0;j<n;++j){
            if (array1[i][j]<min){
                min = array1[i][j];
            }
        }

对于计算最大值的循环也是如此。