本题要求实现一个函数,求一组数最小值及其第一次出现的位置。
函数接口定义:
int Min(int *p, int n,int *pos );
其中 p、n、pos 都是用户传入的参数。函数求数组中n个元素的最小值及其第一次出现的位置。位置通过 pos带回,函数返回最小值 。
裁判测试程序样例:
#include <stdio.h> #define N 5 int Min(int *p, int n,int *pos ); int main() { int a[10],i,min,min_pos; int *pa=a; for(i=0;i<N;i++) scanf("%d",&a[i]); min=Min(pa,N,&min_pos); printf("min=%d,min_pos=%d",min,min_pos); return 0; } /* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
90 60 78 40 55
输出样例:
在这里给出相应的输出。例如:
min=40,min_pos=3
int Min(int *p, int n,int *pos )
{
int min=*p;
*pos=0;//最小值就是第一个的情况
for(int i=1;i<n;i++)
{
if(*(p+i)<min)
{
min=*(p+i);
*pos=i;
}
}
return min;
}
此题思路不难,就是找最小值并且返回第一次出现的位置。只不过要换成指针来做,就涉及到指针与数组的等价关系,将数组部分换成指针即可。