问答题 给定程序MODI1.C中函数 fun 的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。 例如,若输入 8 名学生的成绩:80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为: 4 (平均分为:75.5625 )。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include #define N 20 int fun ( float *s, int n, float *aver ) { float ave, t = 0.0 ; int count = 0, k, i ; for ( k = 0 ; k < n ; k++ ) /**************found**************/ t = s[k] ; ave = t / n ; for ( i = 0 ; i < n ; i++ ) if ( s[ i ] < ave ) count++ ; /**************found**************/ *aver = Ave ; return count ; } main() { float s[30], aver ; int m, i ; printf ( "/nPlease enter m: " ) ; scanf ("%d", &m ) ; printf ( "/nPlease enter %d mark :/n ", m ) ; for( i = 0 ; i < m ; i++ ) scanf ( "%f", s + i ) ; printf( "/nThe number of students : %d /n" , fun ( s, m, &aver ) ); printf( "Ave = %f/n", aver ) ; }
【正确答案】第一处:应求累加和,而不赋值,所以应改为t+=s[k];。 第二处:ave不需要取地址,直接赋给*aver就可以了。
【答案解析】