问答题 函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。 注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: # include #define N 9 void fun(int a[], int n) { int i,j, max, min, px, pn, t; for (i=0; i { /**********found**********/ max = min = ___1___; px = pn = i; for (j=i+1; j /**********found**********/ if (max<___2___) { max = a[j]; px = j; } /**********found**********/ if (min>___3___) { min = a[j]; pn = j; } } if (pn != i) { t = a[i]; a[i] = min; a[pn] = t; if (px == i) px =pn; } if (px != i+1) { t = a[i+1]; a[i+1] = max; a[px] = t; } } } main() { int b[N]={9,1,4,2,3,6,5,8,7}, i; printf("/nThe original data :/n"); for (i=0; iprintf("/n"); fun(b, N); printf("/nThe data after moving :/n"); for (i=0; iprintf("/n"); }
【正确答案】第一处:外循环每循环一次均把数组a当前位置的值,分别赋值给max和min变量,所以应填:a[i]。 第二处:判断max是否小于a[j],若小于,则把a[j]赋值给max,所以应填:a[j]。 第三处:判断min是否大于a[j],若大于,则把a[j]赋值给min,所以应填:a[j]。
【答案解析】