【说明】 下面程序的功能是:在含有10个元素的数组中查找最大数,及最大数所在位置(即下标值),最大数可能不止一个。 例如:若输入 2 8 5 7 8 4 8 3 2 8 则应输出

admin2012-12-10  35

问题 【说明】
   下面程序的功能是:在含有10个元素的数组中查找最大数,及最大数所在位置(即下标值),最大数可能不止一个。
   例如:若输入
   2  8    5    7    8    4    8    3    2    8
   则应输出
   The max:8
   Total:4  //最大数出现次数
   The positions:1  4  6  9
  【函数】
   #include<stdio.h>
   #define M 10
   int fun(int* a,int * n,int pos[ ])
   {
       int i, k max = - 32767;
         (1)  
       for(i=0;i<M;i++)
           if((2))max=a;
       for(i=0;i<M;i++)
           if((3))pos[k++]=i;
       *n=k;
       return max;
   }
   main()
   {
       int a[M],pos[M],i=0j,n;
       printf("Enter 10umber:")
       for(i=0,i<M;i++)scanf("%d",(4));
       j=fun((5));
       printf("The max:%d\n",j);
       printf("Total: %d", n);
       printf("The position:")
       for (i=0; i<n;i++) printf ("%4d", pos);
       printf("\n");
   }

选项

答案(1)k=0 (2)a[i]>max (3)a[i]=max (4)a+i或&a[i] (5)a,&n,pos

解析 先分析(4)、(5)空。(4)空所在语句是从键盘中读入数据并存放在数组a[]之中,循环变量为I。(4)空处应填写存放地址,循环变量有两种表示方法,一种是“a+i”,另一种是“&a”。(5)空处需要填写调用函数fun()的实参,从函数fun()的形参可以看出,第1个参数是要处理的数组a[],第2个参数要返回的最大元素的个数n,第3个参数最大元素的下标数组pos[]。因此(5)空处应填写“a,&n,pos”。
   再来分析(1)-(3)空。(1)、(3)空所在函数是找最大数,并将其下标存放在数组pos[]中,其实现的思路是先遍历一次数组,从数组中找出最大数max,再将遍历一次数组,依次将这些最大数的下标存放在数组pos[]中。(2)空所在的循环就是找最大数max,因此(2)空处应填写“a>max”。(3)空所在的循环是将这些最大数的下标存放在数组pos[]中,因此(3)空处应填写“a=max”。(1)空应填写什么呢?从语句“pos[k++)=i”和“*n=k”可知,变量k是用来指出当前要存放在数组pos[]中的位置,但这个变量要进行初始化,因此(1)空处应填写“k=0”。
转载请注明原文地址:https://jikaoti.com/ti/s5W7FFFM
0

随机试题
最新回复(0)