给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。 例如,有9个正整数:1 5 7 23 87 5

admin2016-08-16  31

问题 给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。
    例如,有9个正整数:1 5 7 23 87 5 8 21 45
    按升序排列时的中间数为:8
    处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45
    请在程序的中括号处填入正确的内容并把中括号删除,使程序得出正确的结果。
    注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!
    试题程序:
#include
#defihe N 9
int fun(int x[])
{int i,j,k,t,mid,b[N];
  for(i=0;i    b=x
  for(i=0;i<=N/2;i++)
  {k=i;
    for(j=i+1;j    if(b[k]>b[j])k=j ;
    if(k!=i)
    {
/*********found*********/
  t=b;b=【1】;
  b[k]=t;
    }
    }
/*********found*********/
mid=b[【2】];
for(i=0;i/*********found*********/
  if(x【3】mid)x=mid;
  return mid;
}
main()
[int i,x[N]={1,5,7,2 3,87,5,
8,21,45};
  for(i=0;i    printf("%d",x);
printf("\nThe mid data is:%d\n",
fun(x));
  for(i=0;i    printf("%d",x);
printf("\n");
}

选项

答案(1)b[k] (2)4或N/2 (3)<

解析 数组中的9个数任意排列,要找到按升序排列时处于中间位置的数,应首先对数组进行升序排列。因为只需找到中间位置的数即可,故不必对整个数组进行排序,只需要排列出数组的前半部分。找到中间数后,遍历原数组,将小于巾间数的元素进行替换。
    填空1:利用选择算法排序,先指定一个元素为最小,用这个数与其后的所有数进行比较,若找小于此数,则进行替换。此处考查替换操作。
    填空2:元素mid存放中间位置的数,数组长度为9,因此中间元素数为b[4]。
    填空3:遍历数组,当元素小于中间位置的数(即mid)时,进行替换。
转载请注明原文地址:https://jikaoti.com/ti/EUE0FFFM
0

最新回复(0)