填空题 请补充函数proc(),该函数的功能是:从键盘输入一个下标n,把数组arr中比元素arr[n]小的元素放在它的左边,比它大的元素放在它的右边,排列成的新数组仍然保存在原数组中。
例如,数组arr={33,67,42,58,25,76,85,16,41,65},输入3。
结果输出“33,42,25,16,41,58,67,76,85,65”。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#define M 10
void proc(int arr[],int n)
{
int i,j=0,k=0,t;
int bb[M];
t=arr[n];
for(i=0;i<M;i++)
{
if(arr[i]>t)
bb[j++]=arr[i];
if(arr[i]<t)
arr[k++]=arr[i];
}
1;
for(i=0; 2;i++,k++)
arr[k]=bb[i];
}
void main()
{
int i,n;
int arr[M]={33,67,42,58,25,76,85,16,41,65};
system("CLS");
printf("/n***original list***/n");
for(i=0;i<M;i++)
printf("%4d",arr[i]);
printf("n suffix n/n");
scanf("%d",&n);
proc(arr,n);
printf("/n***new list***/n");
for(i=0;i<M;i++)
printf("%4d",arr[i]);
}
【正确答案】
【答案解析】arr[k++]=t i<j[解析] 程序中首先将小于arr[n]的k个元素放入数组arr的前k个位置,将大于arr[n]的j个元素放入临时数组bb中。然后将arr[n]放入第k+1个位置。因此,第一处填“arr[k++]=t”;最后将大于arr[n]的k个元素放入数组arr中。因此,第二处填“i<j”。