用指针法求出数组元素中最大者和最小者。 int max,min; void max_min_value(array,n) int array[],n; {【 】; max=min=*array; for(【

admin2009-02-15  39

问题 用指针法求出数组元素中最大者和最小者。
   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=%d\n",max,rain);
   }

选项

答案int *p p=array+1 p=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。
转载请注明原文地址:https://kaotiyun.com/show/6rXp777K
0

最新回复(0)