7-2 利用指针返回多个函数值 (30分)
·
读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。
输入格式:
输入有两行: 第一行是n值; 第二行是n个数
输出格式:
输出最大值和最小值。
输入样例:
在这里给出一组输入。例如:
5
8 9 12 0 3
输出样例:
在这里给出相应的输出。例如:
max = 12
min = 0
程序1:
#include<stdio.h>
int main()
{
int *pmax,*pmin; //定义指针
int n,a[10],min,max,i;
pmax=&max; //将最大值的地址给指针
pmin=&min; //将最小值的地址给指针
scanf("%d",&n);
//依次输入n个数并存放在数组a中
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
*pmax=a[0]; //令最大值等于数组第一个数
*pmin=a[0]; //令最小值等于数组第一个数
//依次用数组后面的每个数作比较
for(i=1;i<n;i++){
if(a[i]>*pmax){ //当数组后面的数大于*pmax时,则取代
*pmax=a[i];
}
if(a[i]<*pmin){
*pmin=a[i]; //当数组后面的数小于*pmin时,则取代
}
}
printf("max = %d\n",max); //按照题目要求的格式输出最大最小值
printf("min = %d",min);
return 0;
}
程序2(函数):
#include <stdio.h>
void f(int *pmin,int *pmax,int s[],int m)
{
int i;
*pmax=s[0]; //令最大值等于数组第一个数
*pmin=s[0]; //令最小值等于数组第一个数
//依次用数组后面的每个数作比较
for(i=1;i<m;i++){
if(s[i]>*pmax){ //当数组后面的数大于*pmax时,则取代
*pmax=s[i];
}
if(s[i]<*pmin){ //当数组后面的数小于*pmin时,则取代
*pmin=s[i];
}
}
}
int main()
{
int n,a[10],min,max,i;
scanf("%d",&n);
//依次输入n个数并存放在数组a中
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
f(&min,&max,a,n); // 将存放最大最小值的地址,数组a和数组大小n传至函数
printf("max = %d\n",max); //按照题目要求的格式输出最大最小值
printf("min = %d",min);
return 0;
}
更多推荐
已为社区贡献1条内容
所有评论(0)