A-A+
用指针法求出数组元素中最大者和最小者。 int max min; void max_min_
问题详情
用指针法求出数组元素中最大者和最小者。 int max,min; void max_min_value(array,n) int array[],n; {【 】; max=min=*array; for(【 】;p<array+n;p++) if(*p>max) max=*p; else if(*p<min)min=*p; } main() { int i,number[20],*p; p=number; printf("输入20个数据:n"); for(i=0;i<20;i++,p++) scanf("%d",p); 【 】; max_min_value(p,10); printf("max=%-10dmin=%dn",max,rain); }
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:int *pp=array+1p=number
函数max_min_value()中用到了指针变量p,显然应在第一个空格处填int*p。函数max_min_value()中的for循环逐一把数组中的元素与max和min的当前值进行比较。max和rain的初值是数组的第1个元素值,第1次比较应与第2个元素比较,即array+1。第二个空格处应填p=array+1。主函数main()中的指针变量p首先指向数组number的第1个元素,当第1个for循环结束时,它指向数组的最后一个元素。若这时将p作为实参传给被调用函数,形参array[]数组的首址将是number口数组的最后元素的地址,而number[]数组的前n-1个元素不能参加比较,这将引起计算出错。因此,在调用max_min_value()函数之前,应将指针p指向number[]数组首址,即在第三个空格应填写p=umber。