请补充函数fun(),该函数的功能是:从键盘输入一个下标n,把数组aa中比元素aa[n]小的元素放在它的左边,比它大的元素放在它的右边,排列成的新数组仍然保存在原数组中。
例如,数组aa=33,67,42,58,25,76,85,16,41, 56,输入3。
结果输出“33,42,25,16,41,56,58,67,76,85”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仪在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#define N 10
void fun(int aa[],int n)
int i,j=0,k=0,t;
int bb[N];
t=aa[n];
for(i=0;i<N;i++)
if(aa[i]>t)
bb[j++]=aa[i];
if(aa[i]<t)
aa[k++]=aa[i];
【1】 ;
for(i=0; 【2】 ;i++, k++)
aa[k]=bb[i];
main()
int i,n;
int aa[N]=33,67,42,58,25,76,85,16,41,56;
clrscr();
printf("\n*** original list ***\n");
for(i=0;i<N;i++)
printf("%4d"/aa[i]);
printf("\n suffix n\n");
scanf("%d",&n);
fun(aa,n);
printf("\n*** new list ***\n");
for (i=0;i<N; i++)
printf("%4d", aa[i]);
参考答案:[1] aa[k++]=t [2]i<j
解析: 填空1:首先将aa[n]赋值给t,通过for循环,将比t大的数暂存在数组bb中,将比t小的数保存在数组aa中,此时应该将t存入数组aa中,正好放在那些小于t的元素后面。填空2:最后将数组bb中的元素存入数组aa中,放在t的后面。变量j记录了大于t的元素的个数,所以变量i的取值范围是从0到j-1。