1.源代码
#include <stdio.h>
void find(int *p,int n,int *max,int *min)
{
int i;
*max=*min=0;
for(i=1;i<n;i++)
{ if(p[i]>p[*max])
*max=i;
if(p[i]<p[*min])
*min=i;
}
}
int main()
{ int a[5],i,max,min;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
find(a,5,&max,&min) ;
printf("%d,%d",max,min);
}
2.代码思路
#include <stdio.h>
是一个预处理指令,用于包含标准输入输出头文件,以便使用printf()
和scanf()
函数。void find(int *p,int n,int *max,int *min)
是一个自定义函数,用于在一个整数数组中查找最大值和最小值的索引。它有四个参数:int *p
是一个指向数组的指针,用于传递数组的首地址。int n
是一个整数,用于表示数组的长度。int *max
和int *min
是两个指向整数的指针,用于存储最大值和最小值的索引。
- 函数体中,首先将
*max
和*min
初始化为0
,表示数组的第一个元素既是最大值也是最小值。 - 然后使用一个
for
循环,从第二个元素开始遍历数组,比较每个元素与当前的最大值和最小值,如果发现更大或更小的元素,就更新*max
或*min
的值为该元素的索引。 int main()
是程序的主函数,程序的执行从这里开始。- 函数体中,首先定义了一个长度为
5
的整数数组a
,以及两个整数变量max
和min
,用于存储最大值和最小值的索引。 - 然后使用一个
for
循环,从标准输入读取五个整数,并依次存储到数组a
中。 - 接着调用
find(a,5,&max,&min)
函数,将数组a
的地址、长度、以及max
和min
的地址作为参数传递,函数会在数组中查找最大值和最小值的索引,并通过指针修改max
和min
的值。 - 最后使用
printf("%d,%d",max,min)
函数,打印max
和min
的值,即最大值和最小值的索引,中间用逗号分隔。
一个可能的输出样例是:
输入:1 2 3 4 5
输出:4,0
这表示数组中的最大值是 5
,它的索引是 4
;最小值是 1
,它的索引是 0
。