改错题   给定程序中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
    请改正程序中的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
    给定源程序:
    #include <stdio.h>
    #define N 20
    void fun(int *a,int n)
    { inti,m,t,k;
    for(i=0;i<2;i++){
    /**********found**********/
    m=0;
    for(k=i+1;k<n;k++)
    /**********found**********/
    if(a[k]>a[m])k=m;
    t=a[i];a[i]=a[m];a[m]=t;
    }
    }
    main()
    { int b[N]={11,5,12,0,3,6,9,7,10,8}, n=10,i;
    for(i=0; i<n; i++) printf('%d',b[i]);
    printf('\n');
    fun(b,n);
    for(i=0; i<n; i++) printf('%d',b[i]);
    printf('\n');
    }
 
【正确答案】(1)m=i; (2)if(a[k]>a[m]) m=k;
【答案解析】 (1)这是一段简单的比较程序,m为有效比较数的下标。从下面的程序可以看出m=i;。 (2)为m赋值为当前最大元素的下标与后面的元素比较,因此m=k;。