
例如,有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
{ k=i;
for(j=i+1;j
if(k != i )
{
/**********found**********/
t=b[i]; b[i]=___1___; b[k]=t;
}
}
/**********found**********/
mid=b[___2___];
for(i=0; i
if(x[i] ___3___ mid) x[i]=mid;
return mid;
}
main()
;
for(i=0; i
for(i=0; i
}
详解
不要只是答案,解释下为什么,谢谢了,急用
你确定你的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,这里则用大于号代替