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

来源:百度知道 编辑:UC知道 时间:2024/06/15 23:43:54
以下是自己写的,我把二维数组初始化全为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不

//求列的最大值和最小值与求行根本不可能只用同一个函数,所以在求列最大值之前必须把数一列一列地挑出来,存在一个一维数组里,把数组地址传递给子函数.
#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=m