#include stdio.h
成都创新互联是专业的青山网站建设公司,青山接单;提供网站设计、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行青山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
#define N 10
//求最大值函数
int max_func(int a[],int n)
{
int i,max;
for(max=a[0],i=1;iN;i++) //初始默认最大值为a[0],遍历数组元素
if(maxa[i]) //如果当前最大值当前数组元素,则将该元素赋值给max
max=a[i];
return max;
}
//求最小值函数
int min_func(int a[],int n)
{
int i,min;
for(min=a[0],i=1;iN;i++) //初始默认最小值为a[0],遍历数组元素
if(mina[i]) //如果当前最小值当前数组元素,则将该元素赋值给min
min=a[i];
return min;
}
int main()
{
int arr[N],i;
int max,min;
for(i=0;iN;i++) //输入10个数组元素
scanf("%d",arr[i]);
max=max_func(arr,N); //调用max_func()函数
min=min_func(arr,N); //调用min_func()函数
printf("最大值=%d\n最小值=%d\n",max,min); //输出结果
return 0;
}
1)问题出在minmax函数,这个函数找到的最大值和最小值没有返回。
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;
}
#includestdio.h
int Max(int a[],int n)
{
int s,max=0;
for(s=1;s=9;s++)//逐个循环进行比较大小找出最大值
{
if(a[max]a[s])
max=s;
}
return max;
}
int Min(int a[],int c)
{
int d,min=0;
for(d=1;d=9;d++)
{
if(a[min]a[d])
min=d;
}
return min;
}
main()
{
int a[10],i,n;
printf("请任意输入10个数字\n");
for(i=0;i10;i++)
scanf("%d",a[i]);
int larger;
larger=Max(a,10);//调用Max函数找出最大值并赋值
printf("最大数为%d\n",a[larger]);
int smaller;
smaller=Min(a,10);
printf("最小数为%d\n",a[smaller]);
n=a[larger];
a[larger]=a[smaller];
a[smaller]=n;
for(i=0;i10;i++)
printf("%2d",a[i]);
}
思路:首先设置最大最小的值都是数组第一个数,然后遍历数组,出现比当前最大值大的,修改最大值为这个数。出现比最小值小的,修改最小值为这个数。
代码
#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. 运行结果
任意输入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。