请补充函数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]。