如何通过一个二维数组在C参数? [英] How to pass a 2D array as a parameter in C?

查看:118
本文介绍了如何通过一个二维数组在C参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

的功能部分从未在以下code进入
请帮我!

 #包括LT&;&stdio.h中GT;
INT findMax为(int * A [],INT男,INT N)//此功能未进入
{
    INT I,J,K = 0;
    对于(i = 0; I<米;我++)
      为(J = 0; J< N; J ++)
        如果(K< A [I] [J]。)
           K = A [I] [J]。
    的printf(HI); //这是喜是也没有打印
                 //这是喜是只是为了测试
    复位K;
}

//这个函数更正如果可能的话

  INT的main()
{
   INT M,N,​​一个[50] [50],I,J,K = 0;
   输出(输入矩阵\\ n行的数目);
   scanf函数(%d个,&安培; M);
   输出(输入矩阵\\ n列的数字);
  scanf函数(%d个,&安培; N);
  的printf(输入矩阵\\ n个元素);
  对于(i = 0; I<米;我++)
    为(J = 0; J< N; J ++)
    {
      scanf函数(%d个,&安培; A [I] [J]);
    }
  输出(基质是);
  对于(i = 0; I<米;我++)
  {
     的printf(\\ n);
     为(J = 0; J< N; J ++)
       的printf(%d个,一个[I] [J]);
  }
  K = findMax((INT **)A,M,N);在此之后//语句是从来没有运行,但不
                           //编译错误
  的printf(矩阵中的\\ n此最大元素为%d,K);
  返回0;
}

请帮助我!
感谢你提前!


解决方案

 的#include<&stdio.h中GT;
#包括LT&;&limits.h中GT;#定义MATRIX_SIZE 50INT findMax(int类型的[MATRIX_SIZE] [MATRIX_SIZE],INT男,INT N){
    //有效以下任一为
    // int类型的[MATRIX_SIZE] [MATRIX_SIZE]
    // int类型的[] [MATRIX_SIZE]
    // INT(*一)[MATRIX_SIZE]
    INT I,J,K = INT_MIN;
    对于(i = 0; I<米;我++)
        为(J = 0; J< N; J ++)
            如果(K< A [I] [J]。)
                K = A [I] [J]。
    复位K;
}诠释主要(无效){
    INT M,N,​​一个[MATRIX_SIZE] [MATRIX_SIZE],I,J,K = 0;    的printf(输入的行数(小于在基质\\ N = 50));
    scanf函数(%d个,&安培; M);
    的printf(输入的列数(小于在基质\\ N = 50));
    scanf函数(%d个,&安培; N);
    如果(M。1 || N'。1 || M&→50 || N'→50){
        的printf(!无效输入\\ n);
        返回-1;
    }
    的printf(输入矩阵\\ n个元素);
    对于(i = 0; I<米;我++)
        为(J = 0; J< N; J ++)
            scanf函数(%d个,&安培; A [I] [J]);    输出(基质是);
    对于(i = 0; I<米;我++){
        的printf(\\ n);
        为(J = 0; J< N; J ++)
            的printf(%d个,一个[I] [J]);
    }
    K = findMax(A,M,N);
    的printf(矩阵中的\\ n此最大元素为%d \\ n,K);    返回0;
}

The section of function is never entered in the following code please help me out!

#include<stdio.h>
int findMax(int *a[], int m, int n)//this function is not entering
{
    int i,j,k=0;
    for(i=0;i<m;i++)
      for(j=0;j<n;j++)
        if(k<a[i][j])
           k=a[i][j];
    printf("hi");//this hi is also not printing
                 //this hi is just for testing
    return k;
}

//This function correct it if possible

int main()
{
   int m,n,a[50][50],i,j,k=0;
   printf("Enter the number of rows in the matrix\n");
   scanf("%d",&m);
   printf("Enter the number of columns in the matrix\n"); 
  scanf("%d",&n);
  printf("Enter the elements in the matrix\n");
  for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    {
      scanf("%d",&a[i][j]);
    } 
  printf("The matrix is");
  for(i=0;i<m;i++)
  {
     printf("\n");
     for(j=0;j<n;j++)
       printf("%d ",a[i][j]);
  }
  k=findMax((int **)a,m,n);//statements after this is never running but no
                           //compilation errors
  printf("\nThe maximum element in the matrix is %d",k);
  return 0;
}

please help me out!! Thanks to you in advance!!

解决方案

#include <stdio.h>
#include <limits.h>

#define MATRIX_SIZE 50

int findMax(int a[MATRIX_SIZE][MATRIX_SIZE], int m, int n){
    //Valid any of the following is
    //int a[MATRIX_SIZE][MATRIX_SIZE]
    //int a[][MATRIX_SIZE]
    //int (*a)[MATRIX_SIZE]
    int i, j, k=INT_MIN;
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            if(k<a[i][j])
                k=a[i][j];
    return k;
}

int main(void){
    int m, n, a[MATRIX_SIZE][MATRIX_SIZE], i, j, k=0;

    printf("Enter the number of rows(<=50) in the matrix\n");
    scanf("%d",&m);
    printf("Enter the number of columns(<=50) in the matrix\n"); 
    scanf("%d",&n);
    if(m < 1 || n < 1 || m > 50 || n > 50){
        printf("invalid input!\n");
        return -1;
    }
    printf("Enter the elements in the matrix\n");
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);

    printf("The matrix is");
    for(i=0;i<m;i++){
        printf("\n");
        for(j=0;j<n;j++)
            printf("%d ",a[i][j]);
    }
    k=findMax(a, m, n);
    printf("\nThe maximum element in the matrix is %d\n", k);

    return 0;
}

这篇关于如何通过一个二维数组在C参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆