所属单元 | 单元五 构造类型程序设计 |
知识点 | 数组、指针 |
关键字 | 最大值、最小值 |
难易程度 | 稍易 |
《C语言程序设计》课程单元案例
——案例9 求最大值和最小值
一、案例描述
求一维数组元素的最大值和最小值,用指针实现:编写一个函数void max_min_value (int a[],int n, int *max, int *min)求整数数组a[]中的最大值和最小值。
二、案例设计思路
图1 函数流程图
本案例要同时求出数组的最大值和最小值,而一个函数最多只有一个返回值,如果不使用指针,就无法在同一个函数(除了main函数)中通过定义2个局部变量的方式将得到的两个值返回给主调函数,所以这里需要使用指针来实现。
这里我们可以编写一个函数void max_min_value (int a[],int n, int *max, int *min),函数有两个形参指针max和min,分别接收主调函数中用于存放最大值和最小值的变量的地址,即,使形参指针变量max指向存放最大值的变量,形参指针变量min指向存放最小值的变量,那么在函数中只要将所求得的最大值和最小值分别赋给两个形参指针所向的变量即可。函数流程描述见图1。
c语言数组最大值最小值三、程序代码
#include<stdio.h>
#define N 10
//函数功能:求一维数组的最大值和最小值
void max_min_value (int a[], int *max, int *min)
{
int i;
for(i=0;i<N;i++)
if(a[i]>*max) *max=a[i];
else if(a[i]<*min) *min=a[i];
}
int main()
{
int a[N],i,max,min;
printf("请输入 %d 个整数:\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
max=a[0];min=a[0];
max_min_value (a,&max,&min);/*调用函数求最大值和最小值*/
printf("\n最大值为:%d,最小值为:%d\n",max,min);
return 0;
}
四、运行结果
图2 运行结果
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论