关于函数调用,写用一维数组求最值函数,然后主函数用二维数组并调用之前函数求最值

以下是自己写的,我把二维数组初始化全为0,应该输出0才对,可就是不对,请高手看看为什么

#include <stdio.h>
#define N 10
#define M 10
float max(float m)
{
float a[M],max;
int i;
max=a[0];
for (i=0;i<10;i++)
{
if (max<=a[i])
max=a[i];
}
return (max);
}

float min(float n)
{
float a[N],min;
int i;
min=a[0];
for (i=0;i<10;i++)
{
if (min>=a[i])
min=a[i];
}
return (min);
}

void main()
{
float max();
float max1,min1;
int i,j;
float a[M][N]={{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}};
for (i=0;i<M+N;i++)
{
if(i<10)
{
max1=max(a[i][N]);
min1=min(a[i][N]);
printf ("第%d行中\n最大值为%g\n最小值为%g\n\n",i+1,max1,min1);
}
else
{
max1=max(a[M][i]);
min1=min(a[M][i]);
}
}

}
原题目是:假设M、N不超过10。分别编写求一维数组元素值最大和元素值最小的函数,主函数中初始化一个二维数组a[10][10],调用定义的两函数输出每行、每列的最大值和最小值。

//求列的最大值和最小值与求行根本不可能只用同一个函数,所以在求列最大值之前必须把数一列一列地挑出来,存在一个一维数组里,把数组地址传递给子函数.
#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]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
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);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-04-15
你这个函数写的挺乱的啊。
首先你定义的两个函数float max(float m)和float min(float n)。其中的型参分别是float型的m和n。同时你在main函数中通过max1=max(a[M][i]); min1=min(a[M][i]); 来调用这两个函数。我想知道的是,实参a[M][i]通过函数传递给型参m和n的时候,我却在函数体中看不到你对m和n的应用。也就是,你传递给自定义的函数的实参,在实际中你并没有用到他们啊。

1.写一个函数,函数fmax1的功能是求出一维数组的最大值。主函数中给定...
1.include <stdio.h> int fmax1(int a[3]){ int i,max=a[0];for(i=0;i<3;i++)if(max<a[i])max=a[i];return max;} int main(int argc,char **argv){ int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},max,i,j;for(i=0;i<4;i++){ max=fmax1(a[i]);...

如何通过函数调用二维数组
int Row,int Col);voidtest(double **x){ for(int i=0;i<Row;i++) for(int k=0;k<Col;k++) x[i][k] += 100.0;}intmain(int argc, char *argv[]){\/* double **x; x = new double *[3];

javascript中求最大值最小值的另一种写法reduce
reduce函数接收两个参数:一个函数和一个初始值。这个函数会在数组的每个元素上被调用,最终返回一个单一的值。在使用中,我们通常会利用它来计算数组的和、平均值等。以数组求和为例,我们使用total作为初始值,并在函数中,将当前值(currentValue)加到总和(total)上。第一次迭代时,total是1,curr...

编写函数求出二维整型数组中元素的最大值
include<stdio.h>void max(int a[3][4]);int main(void){ int a[3][4]={ {1,2,3,4}, {5,6,7,8}, {3,4,5,6} }; max(a);\/\/函数调用; return 0;}void max(int a[3][4])\/\/函数定义要接受一个二维数组,这是你的问题{ int i,j,max=a[0...

编写程序,要求主函数初始化一个矩阵 (5×5),并分别调用各函数实现求
void zc(int b[][5],int n); \/\/对角线函数声明语句 void zc1(int b[][5],int n); \/\/转置函数声明语句 void main(){ int i,j;srand(time(NULL)); \/\/产生一个时间 for(i=0;i<5;i++)for(j=0;j<5;j++)(*(a+i)+j)=rand()%100; \/\/产生一个随机数 cout<<"...

写一函数,对二维数组进行转置,并在主函数调用,用c语言,问哪错了
void zz(int a[3][3]){ int t,i,j;\/\/i<3 for(i=0;i<3;i++)for(j=0;j

C++函数调用二维数组
\/\/函数调用void f(vector<vector<char> > &a){ for (size_t i = 0; i < a.size(); i++) { for (size_t j = 0; j < a[i].size(); j++) { a[i][j] = 'c'; \/\/当二维数组用 } }}void main(){ vector<vector<char> > a; int n; if( cin>>n && n >= 1) { for(...

二维数组函数调用问题
int Check ( int a[N][N] , int place[4][2]){ return 0;} main(){ int a[2][2]={...};int b[4][2]={...};Check (a,b);\/\/这怎么写啊 }

C语言用二维数组定义一个自定义函数数组的最大值?
以下是一个C语言程序,用二维数组定义一个自定义函数数组,并计算数组中的最大值:```c include <stdio.h> \/\/ 自定义函数,用于计算一个整数数组的最大值 int array_max(int arr[], int len) { int max = arr[0];for (int i = 1; i < len; i++) { if (arr[i] > max) { ...

运用数组是可以用调用函数来确定维数吗
不可以,程序会出错的。因而,你需要再写一个函数 int GetDimensionality( int **arr ){ ...} 但即便这样,程序也会出错。函数名字也需要改变。何况,你传入数组的时候,就需要先自行判断一下指针是一维还是二维。这样做就没有意思了对吗?PS: C编译器对指针维数不同不提示错误,提示: warning...

相似回答