如何通过一个二维数组在C参数? [英] How to pass a 2D array as a parameter in C?
本文介绍了如何通过一个二维数组在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屋!
查看全文