问答题 给定程序MODI1.C中函数 fun 的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include #define N 20 int fun ( int * a, int n ) { int i, m, t, k ; for(i=0;i<2;i++) { /**********found**********/ m=0; for(k=i+1;k /**********found**********/ if(a[k]>a[m]) k=m; t=a[i];a[i]=a[m];a[m]=t; } } main( ) { int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i; for ( i=0; iprintf("/n"); fun ( b, n ); for ( i=0; iprintf("/n"); }
【正确答案】第一处:外循环每循环一次,把当前位置i赋值给m,所以应改为:m=i;。 第二处:通过内循环来找出最大的一个数的位置k,所以应改为:if(a[k]>a[m]) m=k;。
【答案解析】