填空题
请补充函数fun(),该函数的功能是:把数给aa中元素下标为奇数的元素按从大到小的顺序重新保存在原数组中,其它元素位置不变。
例如,输入“33,67,42,58,25,76,85,16,41, 56”,则输出“33,76,42,67,25,58,85,56,41,16”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdio.h>
#define N 10
void fun(int aa[])
{
int i, j, t;
for ({{U}} 【1】 {{/U}}; i<N; i=i+2)
{
for(j=i; j<N; j=j+2)
if (aa [i]<aa[j])
{
{{U}} 【2】 {{/U}};
aa [j]=aa[i];
{{U}}【3】 {{/U}};
}
}
}
main()
{
int i;
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]);
fun (aa);
printf("/n*** new list ***/n");
for (i=0; i<N; i++)
printf ("%4d",aa [i] );
}
【正确答案】
1、[1] i=1 [2] t=aa[j] [3] aa[i]=t
【答案解析】[解析] 填空1:本题采用选择法进行排序。因为题目要求将下标为奇数的元素进行排序,所以下标为0的元素不用考虑,从下标为1的元素开始。填空2:借助第三个变量t交换两数。首先将aa[j]赋给t暂存。填空3:然后将aa[i]赋给aa[j]此时aa[j]中的数已经发生变化,而t中暂存了a[j]原来的值,所以最后将t赋给aa[i]。