求一维数组的最大值和最小值

时间:2021-07-02 15:11:54
题设如题  求一维数组的最大值和最小值  要求实参数组名  形参用指针  小弟写的程序如下  
#include <stdio.h>
# define  N  10
void fun(float *x,float *a,float *b,int n)
{ int k;
*a=*b=x[0];
for(k=1;k<n;k++)
{if(x[k]>*a) *a=x[k];
else if(x[k]<*b)
*b=x[k];
}
void main()
{float a[N],*p=a,max,min;
printf("shuru\n");
for(;p<a+N;p++)
scanf("%f",p);
p=a;
fun(p,N,&max,&min)
printf("max=%6.2f\n",max);

printf("min=%6.2f\n",max);
}
因为学过的时间长了  所以实参形参都用了指针  希望各位高手给看看  怎么改成实参数组名  形参用指针  这个代码用VC++6.0编译没有通过 有两个错误  希望高手大大一起帮着改了  小弟不胜感激

7 个解决方案

#1



#include <stdio.h>
# define N 10
void fun(float *x,int a,float *b,int *n)
{ int k;
*a=*n=x[0];
for(k=1;k<a;k++)
{if(x[k]>*a) *a=x[k];
else if(x[k]<*b)
*b=x[k];
}
void main()
{float a[N],*p=a,max,min;
printf("shuru\n");
for(;p<a+N;p++)
scanf("%f",*p);
p=a;
fun(p,N,&max,&min)
printf("max=%6.2f\n",max);

printf("min=%6.2f\n",max);
}




#2


fun(p,&max,&min,N)
调用顺序 不对

#3


#include <stdio.h>
# define N 10
void fun(float *x,float *b,float *n)
{ int k;
*b=*n=x[0];
for(k=1;k<N;k++)
{if(x[k]>*b) *b=x[k];
else if(x[k]<*n)
*n=x[k];
}
void main()
{float a[N],*p=a,max,min;
printf("shuru\n");
for(;p<a+N;p++)
scanf("%f",*p);
p=a;
fun(p,&max,&min)
printf("max=%6.2f\n",max);

printf("min=%6.2f\n",max);
}

先的没写清楚。。这样你看看

#4


#include <stdio.h>
# define  N  10
void fun(float *x,float *a,float *b,int n)
{ int k;
*a=*b=x[0];
for(k=1;k<n;k++)
{if(x[k]>*a) *a=x[k];
else if(x[k]<*b)
*b=x[k];
}
}              
void main()
{float a[N],*p=a,max,min;
printf("shuru\n");
for(;p<a+N;p++)
scanf("%f",p);
p=a;
fun(p,&max,&min,N);
printf("max=%6.2f\n",max);

printf("min=%6.2f\n",min); 

#5


已经测试,VC6.0下通过

#6


顺便多说一句,其实楼主的代码大部分都是对的,思路也很清楚,细节方面要多注意,比如你FUN函数少个}
,你的实参顺序不对,最后你输出的都是MAX两个最大值,总共有三个错误!

#7


fun(p,&max,&min,N);只是这里错了。。。

#1



#include <stdio.h>
# define N 10
void fun(float *x,int a,float *b,int *n)
{ int k;
*a=*n=x[0];
for(k=1;k<a;k++)
{if(x[k]>*a) *a=x[k];
else if(x[k]<*b)
*b=x[k];
}
void main()
{float a[N],*p=a,max,min;
printf("shuru\n");
for(;p<a+N;p++)
scanf("%f",*p);
p=a;
fun(p,N,&max,&min)
printf("max=%6.2f\n",max);

printf("min=%6.2f\n",max);
}




#2


fun(p,&max,&min,N)
调用顺序 不对

#3


#include <stdio.h>
# define N 10
void fun(float *x,float *b,float *n)
{ int k;
*b=*n=x[0];
for(k=1;k<N;k++)
{if(x[k]>*b) *b=x[k];
else if(x[k]<*n)
*n=x[k];
}
void main()
{float a[N],*p=a,max,min;
printf("shuru\n");
for(;p<a+N;p++)
scanf("%f",*p);
p=a;
fun(p,&max,&min)
printf("max=%6.2f\n",max);

printf("min=%6.2f\n",max);
}

先的没写清楚。。这样你看看

#4


#include <stdio.h>
# define  N  10
void fun(float *x,float *a,float *b,int n)
{ int k;
*a=*b=x[0];
for(k=1;k<n;k++)
{if(x[k]>*a) *a=x[k];
else if(x[k]<*b)
*b=x[k];
}
}              
void main()
{float a[N],*p=a,max,min;
printf("shuru\n");
for(;p<a+N;p++)
scanf("%f",p);
p=a;
fun(p,&max,&min,N);
printf("max=%6.2f\n",max);

printf("min=%6.2f\n",min); 

#5


已经测试,VC6.0下通过

#6


顺便多说一句,其实楼主的代码大部分都是对的,思路也很清楚,细节方面要多注意,比如你FUN函数少个}
,你的实参顺序不对,最后你输出的都是MAX两个最大值,总共有三个错误!

#7


fun(p,&max,&min,N);只是这里错了。。。