1)问题出在minmax函数,这个函数找到的最大值和最小值没有返回。
创新互联建站是一家专注于成都网站建设、成都网站设计与策划设计,瓦房店网站建设哪家好?创新互联建站做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:瓦房店等地区。瓦房店做网站价格咨询:18982081108
2)虽然你定义了最大值和最小值为全局变量,但是在minmax函数的调用参数中你又定义了同名变量,这样在minmax函数内部实际使用的是局部变量。
3)最简单的方法,直接把minmax函数的后两个输入参数去掉。
#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;
}
#include stdio.h
#define N 10
void func(int *arr,int n)
{
int i,max,min;
max=min=arr[0];
for(i=0;in;i++)
{
if(maxarr[i])
max=arr[i];
if(minarr[i])
min=arr[i];
}
printf("最大值=%d\n",max);
printf("最小值=%d\n",min);
}
int main()
{
int a[N],i;
void (*pf)(int*,int); //声明函数指针
for(i=0;iN;i++)
scanf("%d",a[i]);
pf=func; //函数指针指向函数首地址
pf(a,N); //使用函数指针调用函数
return 0;
}
示例运行结果:
1 3 5 7 9 2 4 6 8 10
最大值=10
最小值=1
任意输入10个数,求其中的最大值和最小值的源代码如下:
#includestdio.h
#define SIZE_MAX 30
int max(int b[],int n);
int min(int b[],int n);
int main(void)
{
int a[SIZE_MAX],b,c,i,m;
printf("任意多个数,判断最大值和最小值:\n");
printf("输入一个数,表示你想比较多少个数字:\n");
scanf("%d",m);
printf("你输入了%d个数\n",m);
printf("请你输入%d个数\n",m);
for(i=0;im;i++)
{
scanf("%d",a[i]);
}
b=max(a,m);
c=min(a,m);
printf("你输入的%d分别是:\n",m);
for(i=0;im;i++)
{
printf("%d\n",a[i]);
printf("最大数是:%d\n",b);
printf("最小数是:%d\n",c);
return 0;
}
扩展资料
1、如果一个函数确定无需传入任何参数,那么用void限定是一个不错的选择。函数没有声明返回值时,编译器默认其返回值为int。
2、main函数的返回值最终会作为程序的退出状态,而一旦声明为void,在程序退出后,想要获取其退出状态也就不可以了。因此不建议其返回值为void。