1)问题出在minmax函数,这个函数找到的最大值和最小值没有返回。
创新互联公司2013年至今,先为突泉等服务建站,突泉等地企业,进行企业商务咨询服务。为突泉企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
2)虽然你定义了最大值和最小值为全局变量,但是在minmax函数的调用参数中你又定义了同名变量,这样在minmax函数内部实际使用的是局部变量。
3)最简单的方法,直接把minmax函数的后两个输入参数去掉。
思路:首先设置最大最小的值都是数组第一个数,然后遍历数组,出现比当前最大值大的,修改最大值为这个数。出现比最小值小的,修改最小值为这个数。
代码
#include stdio.h
//为了方便返回,使用结构体存储最大值和最小值
typedef struct {
int Max;
int Min;
}MaxMin;
//函数参数array:数组,length:数组长度。
//这里其实可以把最大值最小值作为指针传进去的。
MaxMin GetMaxMin(int *array, int length)
{
int i;
MaxMin maxMin;
if (length = 0)
return maxMin;
//初始化最大值和最小值为数组第一个数
maxMin.Max = array[0];
maxMin.Min = array[0];
for (i = 0; i length; i++) {
if (array[i] = maxMin.Max)
maxMin.Max = array[i]; //比当前最大值大,修改最大值
if (array[i] = maxMin.Min)
maxMin.Min = array[i]; //比当前最小值小,修改最小值
}
return maxMin;
}
//主函数测试
int main() {
int length;
int i;
int *array;
printf("input length of array:");
scanf("%d", length);
array = (int *)malloc(sizeof(int)*length);
for (i = 0; i length; i++) {
printf("input data of array(index %d):", i + 1);
scanf("%d", array + i);
}
MaxMin maxMin = GetMaxMin(array, length);
printf("Max:%d,Min:%d", maxMin.Max, maxMin.Min);
return 0;
}
3. 运行结果
用指针求含有十个元素的数组最大值和最小值
主函数参考
int main()
{
int a[10],i,maxnum,minnum;
for(i=0;i10;i++)
scanf("%d",a[i]);
FindMaxandMin(a,10,maxnum,minnum);
printf("%d %d",maxnum,minnum);
}
输入格式:
数组
输出格式:
最大值 最小值
输入样例:
1 2 3 5 4 6 7 8 9 10
输出样例:
10 1
扩展资料
#include
int main()
{
int a[3];
int i,j,temp;
printf("请输入3个数:");
for(i=0;i scanf("%d",a[i]);
for(i=0;i for(j=0;j if(a[j]a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("最大值%d最小值%d",a[2],a[0]);
return 0;
}
参考资料:百度百科 - C语言
#includestdio.h
int max(int n)
{int i,x,f;
scanf("%d",f);
for(i=1;in;i++)
{scanf("%d",x);
if(xf)f=x;
}
return f;
}
int main()
{int n;
printf("有几个数:");
scanf("%d",n);
printf("其中最大的数是:%d\n",max(n));
return 0;
}
#includestdio.h
int min;
int maxmin(int n)
{int i,x,f;
scanf("%d",f);
min=f;
for(i=1;in;i++)
{scanf("%d",x);
if(xf)f=x;
else if(xmin)min=x;
}
return f;
}
int main()
{int n,mm;
printf("有几个数:");
scanf("%d",n);
mm=maxmin(n);
printf("其中最大的数是:%d\n最小的数是:%d\n",mm,min);
return 0;
}