填空题 请补充函数fun(),该函数的功能是;交换数组aa中最大和最小两个元素的位置,结果依然保存在原数组中,其它元素位置不变。注意数组aa中没有相同元素。 例如,输入“33,67,42,58,25,76,85,16,41, 56”,则输出“33,67,42,58,25,76,16,85,41,56”。 注意;部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include <stdio. h> #define N 10 void fun(int aa[]) { int i, j, t; int max=0, min=0; for(i=0; i<N; i++) { if({{U}} 【1】 {{/U}}) max=i; if({{U}} 【2】 {{/U}}) min=i; } t=aa [max]; {{U}} 【3】 {{/U}}; aa [min] =t; } 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、[1] aa[max]<aa[i] [2]aa[min]>aa[i] [3]aa[max]=aa[min]    
【答案解析】[解析] 填空1:先假设aa[0]最大,如果找到更大的元素,则将这个元素的下标赋给max。填空2:同理,先假设aa[0]最小,如果找到更小的元素,则将这个元素的下标赋给min。填空3:找到最大值和最小值之后,借助第三个变量t交换这两个元素。