C语言--实现找出3x3矩阵里行最大同时列最小的数所在的行和列

首先先说一下二维数组的传参,有三种模式

1.形参为二级指针

函数定义:

    void function(int **arry, int col);// col为列宽度

函数调用:

    function((int **)arry);

在函数中使用:

    *(int *)arry+rows*col+cols  ; 

2.形参为数组指针

函数定义:

    void function(int*arry)[], int col);// col为列宽度

函数调用:

    function(arry);  //直接输入数组名就可以了

在函数中使用:

    *(int *)arry+rows*col+cols;
    *(a[rows]+cols);
    *(*(a+rows)+rols);

2.形参为二维数组

函数定义:

    void function(int arry[][n]);// col为列宽度

函数调用:

    function(arry);  //直接输入数组名就可以了

在函数中使用:

    *(int *)arry+rows*col+cols;
    *(a[rows]+cols);
    *(*(a+rows)+rols);

下面实现找出3x3矩阵里行最大同时列最小的数所在的行和列

// arry 矩阵  row: 行  col: 列  Rrow:  返回行  Rcol:  返回列

void FoundMaxRowMinCol(int **arry,int row,int col,int *Rrow,int *Rcol)
{
    //先判断数组是否为空
    if(arry==NULL)
    {
        return False;
    }
    int i=0,j=0;
    int Number=0;
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            if(*((int *)arry+i*col+j)>Number)  //先找出行最大
            {
                Number=*((int *)arry+i*col+j;
                *Rrow=i;
                *Rcol=j;                      
            }
        }
        //再判断是不是列最小
        for(int k=0;k<row;k++)
        {
            if(*((int *)arry+k*col+*Rcol)<Number)
              break; //跳出循环
            if(k=row-1)
            printf("%d, %d\n", *row, *col);
        }
    }
}

版权声明:本文为qq_39397165原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。