请补充函数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 ( 【1】 ; i<N; i=i+2)
for(j=i; j<N; j=j+2)
if (aa [i]<aa[j])
【2】 ;
aa [j]=aa[i];
【3】 ;
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] 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]。