关于调用函数的,主要是想把二维数组,传递给调用函数,并在调用函数里面打印

#include <stdio.h>
void M(int *a)
{ int i,j;
for(i=0;i<3;i++)
{for(j=0;j<2;j++)
printf("%d",M[i][j]);}
}
main()
{int a[3][2]={1,1,1,0};
M(a);
}
希望大家解决一下 把主函数里面的二维数组,传递给调用函数,并在调用函数里面对其进行处理,例如输出之类的,,,,谢谢啊
在线等啊。。。。。。谢谢
晕 假设行列都是随机输入的呢?? 还有一楼的根本执行不了
二楼的 问一下 主函数里面的 点用函数fun怎么写 这种我试过了 也有int ** ' differs in levels of indirection from 'int [3][2]
M different types for formal and actual parameter

第1个回答  2010-12-16
//求列的最大值和最小值与求行根本不可能只用同一个函数,所以在求列最大值之前必须把数一列一列地挑出来,存在一个一维数组里,把数组地址传递给子函数.
#include <stdio.h>
#define M 4
#define N 5
int flag=0;
float max(float *a)
{
float max;
int i;
int MN=N;
if(flag)MN=M;
max=a[0];
for (i=0;i<MN;i++)
{
if (max<=a[i])
max=a[i];
}
return (max);
}

float min(float *a)
{
float min;
int i;
int MN=N;
if(flag)MN=M;
min=a[0];
for (i=0;i<MN;i++)
{
if (min>=a[i])
min=a[i];
}
return (min);
}

void main()
{
float max(float *);
float temp[M];//每列M个数
float max1,min1;
int i,j;
float a[M][N]=;
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%5.f",a[i][j]);
printf("\n");
}
for (i=0;i<M;i++)
{

max1=max(a[i]);//*传递第i行地址
min1=min(a[i]);
printf ("第%d行中\n最大值为%g\n最小值为%g\n\n",i+1,max1,min1);
}
flag=1;
for(j=0;j<N;j++)
{
for (i=0;i<M;i++)
temp[i]=a[i][j];
max1=max(temp);
min1=min(temp);
printf ("第%d列中\n最大值为%g\n最小值为%g\n\n",j+1,max1,min1);
}
}
第2个回答  2010-12-16
如果是一个固定的数组,可用void M(int a[2][3]);void(int **a)需要底下main函数中定义时就将定义为**a,例int **a。

补充:
#include <stdio.h>
void M(int **a)
{ int i,j;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
printf("%d",a[i][j]);
}
void main()
{//int a[3][2]={1,1,1,0};
int **a=NULL; //定义二维指针
a=new int*[3];
for(int i=0;i<3;i++)
a[i]=new int[2]; //定义二维数组
for(i=0;i<3;i++)
for(int j=0;j<2;j++)
scanf("%d",&a[i][j]); //输入值
M(a);
}
第3个回答  2010-12-16
void fun(int **p, int row, int col)
{
int i,j;
for(i=0;i<row;i++)'
{
for(j=0;j<col;j++)
printf("%d\t",p[i][j]);
printf('\n'); //换行
}
}

===补充===
void main()
{
int a[3][2]={1,1,1,0}; //这,是用来分隔数组数据的,不是用来输出的。。。
fun(a, 3, 2);
}
第4个回答  2010-12-16
void M(int *a)
{ int i,j;
for(i=0;i<3;i++)
{for(j=0;j<2;j++)
printf("%d",M[i][j]);}
}
---------------
void M(int a[][2])
{ int i,j;
for(i=0;i<3;i++)
{for(j=0;j<2;j++)
printf("%d",a[i][j]);}
}本回答被提问者和网友采纳

编写一个函数,将二维数组(n*m)转置.在main函数中调用该函数并输出结果...
j<CLO;j++) printf("%d ",arr[i][j]); printf("倒置后的数组:\\n")

C语言如何用函数输入输出二维数组
include <stdio.h> int a[10][10];int main(){ int i , j;\/\/input data for( i = 0; i < 10; i++)\/\/多少行 { for(j = 0; j < 10; j++)\/\/多少列 { scanf("%d", &a[i][j]);\/\/输入第i行j列的值 } } \/\/ouput data for( i = 0; i < 10; i++){ for(...

如何输出二维数组?
1、首先,定义两个整型变量,控制二维数组的输出。2、接着,给二维数组n[3][4]初始化不同的数值。3、用二重循环,输出数组中的各个数值。4、二维数组可以用大括号括起来的数字直接赋值,内层大括号中每对表示一行,每对内层大括号中的值表示一行中的各数值。5、运行程序,可以看到二维数组中的值,...

调用函数使二维数组转置
trans(a); 这儿是3*4的编译都会报错的,参数类型不对。include<stdio.h>#include<stdlib.h>#includevoid main(){void trans(int a[3][4], int b[4][3]);int a[3][4];int b[4][3];int i, j;srand(time(NULL));for (i = 0; i < 3; i++)for (j = 0; j < 4; j+...

c语言中怎么用二维数组作为函数参数
二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如:它们是合法且等价,也可以使用如下形式:但不能省略第二维的大小,如下面的定义是不合法的,编译时会出错:因为从实参传递来的是数组的起始地址,如果在形参中不...

c语言怎么把二维数组传入函数
传数据的首地址,也就是数组名代表的指针值。

如何通过函数调用二维数组
C语言编程的过程中,不可避免的会碰到二维或二维以上的数组作为函数的形参的情况,在以前的编程过程中,习惯了动态数组的应用,很是使用直接定义高维数组。最近在编程的过程中就碰到了这个问题:有如下的测试程序:voidtest(double **x,int Row,int Col);voidtest(double **x){ for(int i=0...

C语言中如何将二维数组作为函数的参数传递
void f(int array[3][]); \/\/错误 3、二维数组作为实参传递时,必须保证实参第2维的维数与形参第2维的维数相同,因为必须要保证形参和实参的数据类型一致。比如定义如下函数:void f(int array[][10]);可以将如下数组传递给函数f。int a[2][10] = {1,2,3,4}; int b[4][10] = {1...

定义一个函数怎么用二维数组做参数?
\\x0d\\x0aprint(int a[][3],int n){}\\x0d\\x0a另一种为print(int (*a)[3],int n){}\\x0d\\x0a为二维数组时,第二维不能省略,并且最好与实参的第二维一样。 \\x0d\\x0a\\x0d\\x0a在调用时,只要写二维数组名即可。可以写成print(a,5);实参数组名为a的情况下。

计算机二级常考函数的知识点
被调用函数 x,y是形式参数 函数返回数值是整型 z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。 程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行 2)一定要注意参数之间的传递 实参和形参之间 传数值,...

相似回答
大家正在搜