一、程序填空题 1、给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数

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

例如,有9个正整数:1 5 7 23 87 5 8 21 45
按升序排列时的中间数为:8
处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 9
int fun(int x[])
{ int i,j,k,t,mid,b[N];
for(i=0;i for(i=0;i<=N/2;i++)
{ k=i;
for(j=i+1;jb[j]) k=j;
if(k != i )
{
/**********found**********/
t=b[i]; b[i]=___1___; b[k]=t;
}
}
/**********found**********/
mid=b[___2___];
for(i=0; i/**********found**********/
if(x[i] ___3___ mid) x[i]=mid;
return mid;
}
main()
;
for(i=0; i printf("\nThe mid data is: %d\n",fun(x));
for(i=0; i printf("\n");
}
详解
不要只是答案,解释下为什么,谢谢了,急用
你确定你的main函数写对了吗? 都没有scanf??
答案:
1、b[k],你这里是个选择排序方法,在第一个found下面的三个表达式,是将数组中两个元素进行替换,替换的一般步骤都是这样的:t=a[i],a[i]=a[j],a[j]=t
2、b[4],这个mid参数是用来存数组排序之后的中间值,9个元核让素,手慎中间位置应该是第五个元素,也就是数组中的b[4]
3、<,题目中要求,将数组中元素比mid小的都替换成改薯局mid,所以这里用小于号代替,如果是将数组中元素比mid大的都替换成mid,这里则用大于号代替
← 上一篇: 下一篇: →