二级C语言上机试题汇编.pdf
全国计算机等级考试二级C语言上机试题汇编2011年版第1套填空题请补充F U N函数,F UN函数的功能是求10的阶乘。注意:部分源程序给出如下。请勿改动主函数m a i n和其他函数中的任何内容,仅在fu n函数的横线上填入所编写的若干表达式或语句。试题程序:#inclu de long fu n(int n)(if(1 )retu rn(n*fu n(_2 _);retu rn_3 _;)main()printf(/z 1 0!=%ldnz,,fu n(1 0);)第1处填空:n l或ln第2处填空:n-1第3处填空:1或1 1或1 L改错题下列给定程序的功能是:读入一个整数K (2 =K (=1 0 0 0 0),打印它的所有因子(即所有为素数的因子)。例如,若输入整数2 3 1 0,则应输出:2、3、5、7、I K请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#inclu de#inclu de/*fou nd*/I sP rime(int n);(int i,m;m=1;/*fou rid*/for(i=2;in;i+)if!(n%i)(m=0;break;)retu rn(m);main()(int j,k;printf(nplease enter an integer nu mber between 2 and 1 O O O O:);scanf(%d,&k);printf(nnT he prime factor(s)of%d is(are):,k);for(j=2;jk;j+)if(!(k%j)&(I sP rime(j)printf(/z%4 d,j);printf(n);)第 1 处:I sprime(int n);应改为I sprime(int n)第2处:if!(n断)应该为if(!(n%i)编程题M 个人的成绩存放在score数组中,请编写函数fu n,它的功能是:返回低于平均分的认输,并将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为1 0、2 0、3 0、4 0、5 0、6 0、7 0、8 0、90 时,函数返回的认输应该是4,below中的数据应我1 0、2 0、3 0、4 0 o注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fu n的花括号中填入所编写的若干语句。试题程序:#inclu de#inclu de#inclu de int fu n(int score,int m,int below)main()int i,n,below9;int score9=1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,90);F I L E *ou t;n=fu n(score,9,below);printf(z/nB elow the av erage score are:;ou t=fopen(ou t.dat,w);for(i=0;in;i+)(printf C%d z,,belowi);fprintf(ou t,%dn,belowi);fclose(ou t);)答案是:int fu n(int score,int m,int below)(int I,k=0,av er=0;for(i=0;im;i+)av er+=scorei;av er/二 m;for(i=0;im;i+)if(score E iav er)(belowk=scorei;k+;)retu rn k;)第2 套填空题请在函数F U N 的横线上填写若干表达式,使从键盘上输入一个整数N,输出斐波纳契数列。斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如:0 1 1 2 3 5 8 1 3-.请勿改动主函数main和其他函数中的任何内容,仅在fu n函数的横线上填入所编写的若干表达式或语句。试题程序:S inclu de int fu n(int n);main()(int i,n=0;scanf(%d,&n);for(i=0;in;i+)printf(,z%d ,fu n(i);)int fu n(int n)(if(1 )retu rn 0;else if(_2 _)retu rn 1;elseretu rn _3 _;)第1处填空:n=0 或0=二 n或!n第2处填空:n=l或l=n第3 处填空:,1 1 1 1(1 1-1)+1 1 1 1(1 1-2)或1 1 1 1(1 1-2)+1 1 1 1(1 1-1)改错题下列给定程序中,函数F U N 的功能是:逐个比较a、b 两个字符串对应位置中的字符,把A S C I I 值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aB C D eF gH,b 中的字符串为:A B cd,则c中的字符串应为:aB cdeF gHo请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#inclu de#inclu de v oid fu n(char*p,char*q,char*c)(/*fou nd*/int k=1;/*fou nd*/while(*p!=*q)if(*p *q)ck=*q;elseck=*p;if(*p)p+;if(*q)q+;k+;)main()(char a1 0 =aB C D eF gH,b1 0 =A B cd,c8 0 =0 ;fu n(a,b,c);printf(Z/T he string a:);pu ts(a);printf(,zT he string b:);pu ts(b);printf(/zT he resu lt:,z);pu t s(c);)第1处:int k=l 应改为int k=0;第2 处:while(*p!=*q)应改为while(*p|*q)编程题请编写函数fu n,它的功能是:求出1到1 0 0 0之内能被7或1 1整除、但不能同时被7或1 1整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include void fun(int*a,int*n)main()int aa1 0 0 0,n,k;F I L E *out;fun(aa,&n);out=fopen(out.dat,w);for(k=0;k n;k+)if(k+l)%1 0=0)(printf(/z%5 dn/z,aak);fprintf(out,aak);)else(printf(%5 d,”,aak);fprintf(out,%d,aak):)fclose(out):)答案是:void fun(int*a,int*n)int i,j=0;for(i=2;i 1 0 0 0;i+)if(i%7=0 i%ll=0)&i%77!=0)aj+=i;*n=j;)第3套填空题请补充函数F UN (C H AR*S),该函数的功能是把字符串中的内容逆置.例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容为edcba.请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include#include#include Sdefine N 8 1void fun(char*s)(int i,n=strlen(s)-1;char t;for(1=0;i n;i+,_1 _)t=si;2:3;)main()(char aN;printf(E nter a string:z/);gets(a);printf(The original string is:);puts(a);fun(a);printf(n);printf(/zThe string after modified:);puts(a);)第1处填空:n一或一n或1 1-=1 或1 1=1 1-1第2 处填空:si=sn或*(s+i)=*(s+n)第3 处填空:sn=t或*(s+n)=t改错题下列给定的程序中,函数f u n 的功能是:依次取出字符串中所以数字字符,形成新的字符串,并取代原字符串。请改正函数fun中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:include#include void fun(char*s)int i,j;/*found*/for(i=0,j=0;si!=0*;i+)if(sj=0&si=,9,)sj=si;/*found*/sj=0”;)main()(char item80;printf(z/nEnter a string:);gets(item);printf(z,nnThe string is:%sn,item);fun(item);printf(z/nnThe string of changing is:%sn,item);)第 1 处:sj=si;应改为sj+=si第2 处:sj=/0 ;应改为sji 0,;编程题请编写函数void fun(int x,int pp,int*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回.例如,若x中 的 值 为30,则 有4个数符合要求,它 们 是1,3,5,15.注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include void fun(int x,int pp,int*n)main()(int x,aa1000,n,i;FILE*out;printf(,znPlease enter an integer number:nz,);scanf(%d,&x);fun(x,aa,&n);for(i=0;in;i+)printf(d,aai);printf(n);fun(730,aa,&n);out=fopen(out.dat,w);for(i=0;i n;i+)fprintf(out,%drT,aai);fclose(out);答案是:void fun(int x,int pp,int*n)int i=l,j=0,k=0,*t=pp;for(i=0;i=x;i+)if(i%2!=0)(j+;)for(i=0;i j;i+)if(x%ti=0)(ppk=ti;k+;)*n=k;)第4 套填空题请补充函数F UN,它的功能是:计算并输出N (包括N)以内能被3或7 整除的所有自然数的倒数之和。例如,在主函数中从键盘给N输入3 0 后,输出为:S=l.2 2 63 2 3 c请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include double fun(int n)(int i;double sum=0.0;for(i=l;_1 _;i+)if(i%3=0 2 i%7=0)sum+=_3 _/i;return sum;)main()(int n;double s;printf(z,nlnput n:);scanf(/d,&n);s=fun(n);printf C,nns=%fn/Z,s);)第1处填空:i=i第2处填空:|第3处填空:1.0或(double)1改错题下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaB B bl2 3 C C ccccd,则应输出结果:upper=6,lower=8请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include ttinclude/*found*/void fun(char*s,int a,int b)(while(*s)(/*found*/if(*s=A&*s=a&*s=,z)b+;s+;)main()(char s1 0 0;int upper=0,lower=0;printf(,znPlease a string:);gets(s);fun(s,feupper,&lower);printf(z,n upper=%d lower二dn,upper,lower);)第 1 处:void fun(char*s,int a,int b)应改为void fun(char*s,int*a,int*b)第2处:a+;应改为(*a)+;第3处:b+;应改为(*b)+;编程题请编写一个函数void fun(char*tt,int pp),统计在tt字符串中“a”到“z”26 个字母各自出现的次数,并依次存放在PP所指数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include void fun(char*tt,int pp)()main()(char aa1 0 0 0;int bb2 6,k;F I L E *out;printfC nPlease enter a char string:);scanf(/z%s/z,aa);fun(aa,bb);for(k=0;k 2 6;k+)printf(z z%dz,,bb k);printf(n);funC a bosom friend afar brings a distant land near”,bb);out=fopen C out.datz/,w);for(k=0;k 2 6;k+)fprintf(out,dn,bbk);fclose(out);)答案是:void fun(char*tt,int pp)(int I;for(i=0;i 2 6;i+)PpE i=O;while(*tt)switch(*tt)(case a :pp0+;break;case b :ppl+;break;case c:pp2+;break;case d,:pp3+;break;case e:pp4+;break;case f:pp5+;break;case g:pp6+;break;case h,:pp7+;break;case i,:pp8+;break;case j:pp9+;break;case k,:pp1 0+;break;case r:pp1 1+;break;case m:pp1 2+;break;case n:pp1 3+;break;case o:pp1 4+;break;case P:pp1 5+;break;case q:pp1 6+;break;case r:pp1 7+;break;case s:pp1 8+;break;case t:pp1 9+;break;case u,:pp2 0+;break;case V,:pp2 1+;break;case w,:pp2 2+;break;case X9:pp2 3+;break;case y:pp2 4+;break;case,z:pp2 5+;break;)tt+;)第5 套填空题给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S=pR,在程序中定义的变量名要与公式的变量相同)。例如,输入圆的半径值:1 9.5 2 7,输出为:S=5 9 8.9 5 0 0 1 7。请勿改动主函数m ai n 和其他函数中的任何内容,仅在fu n 函数的横线上填入所编写的若干表达式或语句。试题程序:t t i n clu de do u ble fu n (do u ble r)(r et u r n 3.1 4 1 5 9*_1 _/2.0;)m ai n()(do u ble x;p r i n t f(,zE n t er x:);s can f(,z%lfz/,_2 _);p r i n t f(/z s=%lfn ,fu n(_3 _);)第1处填空:r*r第2处填空:&x第3处填空:x改错题假定整数数列中的数不重复,并存放在数组中。下列给顶程序中,函数fu n 的功能是删除数列中值为x的元素,同时将其他元素前移。N 中存放的是数列中元素的个数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ai n 函数,不得增行或删行,也不得更改程序的结构!试题程序:i n clu de t t defi n e N 2 0fu n(i n t *a,i n t n,i n t x)(i n t p =0,i;ar i =x;w h i le(x !=ap)P=p+1;i f(p =n)(r et u r n -1;)els e(/*fo u n d*/fo r (i=p;i n;i+)ai+l=ai;r et u r n n-l;)m ai n()(i n t w N=-3,0,1,5,7,9 9,1 0,1 5,3 0,9 0 ,x,n,i;n =1 0;p r i n t f(,zTh e o r i gi n al dat a:n,z);fo r (i=0;i n;i+)p r i n t f CW,w i);p r i n t f(z/n ln p u t x (t o delet e):,z);s can f(d,&x);p r i n t f(Z/D elet e:%dn ,x);n =fu n (w,n,x);i f(n =-1)printf(*Not be found!*nn);)elseprintf(z,The data after delete:n);for(i=0;in;i+)printf(z,%5d,z,wi);printf(nn);)第 1 处:ai+l=ai;应改为ai=ai+l编程题请编写一个函数void fun(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若 输 入:17,5,则应输出:19,23,29,31,370注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:Sinclude Sinclude void fun(int m,int k,int xx)main()(int m,n,zz1000;FILE*out;printf(z,nPlease enter two integers:,);scanf(z,%d,&m,&n);fun(m,n,zz);for(m=0;mn;m+)printf C%d ,zzm);printf(n);fun(28,20,zz);out=fopen(/zout.dat,z,w);for(m=0;m 20;m+)fprintf(out,/dn,zzm);fclose(out);答案是:void fun(int m,int k,int xx)i n t g=0,I,j,flag=l;fo r(i=m+l;i+)(fo r(j=2;j =i)(i f(k =0)x x g+=I;k ;)els ebr eak;第6套给定程序的功能是计算并输出下列级数的前N项之和s/V,直到SJV大于Q为止,Q的值通过形参传入。sN=N.N 1342312例如,若Q的值为5 0.0,则函数值为5 0.4 1 6 6 8 7 c请勿改动主函数m ai n和其他函数中的任何内容,仅在fu n函数的横线上填入所编写的若干表达式或语句。试题程序:t t i n clu de do u ble fu n(do u ble q)(i n t n;do u ble s;n =2;s=2.0;w h i le(s _1 _ q)(s =s +(do u ble)(n+l)/n;2 ;)p r i n t f(n=%dn ,n);3 ;)m ai n()p r i n t f(z/%fnz/,fu n(5 0);)第1处填空:二第2处填空:n+或n+=1 或n=n+1第3 处填空:r et u r n s 或r et u r n (s)改错题下列给定程序中,函数fu n 的功能是:根据整型参m 的值,计算如下公式的值。T=l-曲m3*312*21例如,若m 中的值为5,则应输出:0.5 3 6 3 8 9请改正程序中的错误,使程序能得出正确的结果。注意:不要改动m ai n 函数,不得增行或删行,也不得更改程序的结构!试题程序:t t i n clu de#i n clu de do u ble fu n(i n t m)(do u ble y =1.0;i n t i;/*fo u n d*/fo r (i=2;i m;i+)/*fo u n d*/y -=l/(i*i);r et u r n(y);)m ai n()(i n t n =5;p r i n t f(z,n Th e r es u lt i s%lfnz,,fu n (n);)第 1 处:fo r (i=2;i m;i+)应改为fo r(i=2;i =m;j+)第2 处:y-=l/(i*i);应改为y-=4.0/(i*i)编程题请编写一个函数v o i d fu n (ch ar a,ch ar b,i n t n),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b 所指的数组中,n 中存放指定的下标。例如,输入一个字符串Wo r ld,然后输入3,则调用该函数后的结果为Wo r d。注意:部分源程序给出如下。请勿改动主函数m ai n 和其他函数中的任何内容,仅 在 函 数 f u n 的花括号中填入所编写的若干语句。试题程序:#i n clu de#i n clu de#defi n e L E N 2 0v o i d fu n (ch ar a,ch ar b,i n t n)()m ai n()(ch ar s t r lL E N,s t r 2 L E N;i n t n;F I L E *o u t;p r i n t f(z zE n t er t h e s t r i n g:n,z);get s (s t r l);p r i n t f(Z/E n t er t h e p o s i t i o n o f t h e s t r i n g delet ed:);s can f(%d,&n);fu n (s t r l,s t r 2,n);p r i n t f(z zTh e n ew s t r i n g i s:%s n ,s t r 2);fu n (H ello Wo r ld!”,s t r 2,9);o u t =fo p en (z,o u t.datz,,w );fp r i n t f(o u t,s ,s t r 2);fclo s e(o u t);)答案是:v o i d fu n (ch ar a,ch ar b,i n t n)i n t I,j=0;fo r(i=0;i L E N;i+)i f(i!=n)(bj=ai;j+;)bj=,0,;)第7套填空题函数fu n的功能是:统计长整数n的各个位上出现数字1,2,3的次数,并通过外部(全 局)变 量cl,c2,c3返回主函数。例如,当=1 2 3 1 1 4 3 5 0时,结果应该为:cl=3,c2=l,c3=2.注意:部分源程序给出如下。请勿改动主函数m ai n和其他函数中的任何内容,仅在fu n函数的横线上填入所编写的若干表达式或语句。试题程序如下:i n clu de i n t cl,c2,c3;v o i d fu n(lo n g n)(cl=c2 =c3 =0;w h i le(n)(s w i t ch (1 _)(cas e 1:cl+;2 ;cas e 2:c2+;3 ;cas e 3:c3+;)n /=1 0;)m ai n()(lo n g n =1 2 3 1 1 4 3 5 0 L;fu n (n);p r i n t f(n Th e r es u lt :n);p r i n t f(/n=%ld cl=%d c2=%d c3=%dn/,,n,cl,c2,c3);)第1处填空:n%1 0第2处填空:br eak第3处填空:br eak改错题下列给定程序中函数fu n 的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动m a i n 函数,不得增行或删行,也不得更改程序的结构!试题程序:Si n cl u d e#d e f i n e N 20v o i d f u n(i n t a ,i n t n)(i n t i,j,t,p;f o r (j=0;j n-l;j+)/*f o u n d*/p =jf o r (i=j;i n;i+)i f(a i a p )(/*f o u n d*/P=i;t =a p ;a p =a i ;a i =t;)m a i n()(i n t a N =9,6,8,3,-1,i,m =5;p r i n t f (排序前);f o r (i=0;i m;i+)p r i n t f (,z%d,,z,a i );p r i n t f (n);f u n (a,m);p r i n t f (排序06 o);f o r (i=0;i m;i+)p r i n t f (%d,,a i );p r i n t f (n);)第1 处:P=j应改为p=j;第2处:p =i应改为p=j;编程题请编写一个函数i n t f u n(i n t*s,i n t t,i n t*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单位中。例如,输入如下整数:876 675 896 101 301 401 980 431 451 777则输出结果为:6,980o注意:部分源程序给出如下。请勿改动主函数m a i n和其他函数中的任何内容,仅在函数f u n的花括号中填入所编写的若干语句。试题程序:#i n cl u d e#i n cl u d e v o i d f u n(i n t *s,i n t t ,i n t *k)()m a i n()i n t a 10 =876,675,896,101,301,401,980,431,451,777,k ;FILE*o u t;f u n (a,10,&k);p r i n t f(/z%d,%d n,/,k,a k );o u t =f o p e n (o u t.d a t ,w );f p r i n t f(o u t,%d n%d”,k,a k );f cl o s e(o u t);)答案是:v o i d f u n (i n t *s,i n t t,i n t *k)i n t I,m a x;m a x=s E0;f o r (i=0;i m a x)(m a x=s i ;*k=I;)第8套填空题请补充m a i n函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为0时结束。例如,输入1 2 3 5 4 0时,最大的数为5。请勿改动主函数m a i n和其他函数中的任何内容,仅在f u n函数的横线上填入所编写的若干表达式或语句。试题程序:Si n cl u d e#i n cl u d e t t d e f i n e N 100m a i n()(i n t n u m N;i n t i =-1;i n t m a x =0;p r i n t f (z/n l n p u t i n t e g e r n u m b e r:n);d o(i+;p r i n t f (z/n u m i);s ca n f (%d,_ _ _1_ _ _);m a x =_ _2_ _ _ n u m i :m a x;w h i l e(3_ _ _);p r i n t f (z/m a x=%d nz,,m a x);)第1处填空:或n u m+i第2 处填空:m a x m a x?第3 处填空:n u m i !=0或0!=n u m i 改错题下列给定程序中,函数f u n的功能是:在字符串s t r中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用f u n函数之前给字符串输入:ABCDe FGH,调用后字符串中的内容为e ABCDFGH请改正程序中的错误,使程序能得出正确的结果。注意:不要改动m a i n函数,不得增行或删行,也不得更改程序的结构!试题程序:t t i n cl u d e /*f o u n d*/v o i d f u n(ch a r *p);ch a r m a x,*q;i n t i =0;m a x =p i ;w h i l e (p i !=0)(i f (m a x p)*q =*(q-l);q-;)p 0 =m a x;)m a i n ()ch a r s t r 80;p r i n t f (En t e r a s t r i n g:);g e t s (s t r);p r i n t f(n Th e o r i g i n a l s t r i n g:);p u t s(s t r);f u n (s t r);p r i n t f (z/n Th e s t r i n g a f t e r m o v i n g:);p u t s(s t r);p r i n t f(n n );)第 1 处:v o i d f u n (ch a r *p);应改为v o i d f u n (ch a r *p)第2处:p=q+I;应改为q=p+i;编程题编写函数f u n,函数功能是:根据以下公式计算s,结果作为函数值返回;n通过型参传入。S=l+1 2 3.7 7.11 2 311 21例如:若n的值为1 1时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数m a i n和其他函数中的任何内容,仅在函数f u n的花括号中填入所编写的若干语句。试题程序:t t i n cl u d e#i n cl u d e#i n cl u d e f l o a t f u n (i n t n)()m a i n()(i n t n;f l o a t s;FILE*o u t;p r i n t f (z,n Pl e a s e e n t e r N:);s ca n f (z/%d,z,&n);s=f u n (n);p r i n t f C Th e r e s u l t i s:%f n,z,s);s =f u n(28);o u t =f o p e n (z,o u t.d a tz z,w );f p r i n t f(o u t,f ,s);f cl o s e(o u t);)答案是:f l o a t f u n(i n t n)(i n t i;f l o a t s=l.0,t=l.0;f o r (i=2;i=n;i+)(t=t+i;s=s+l/t;)r e t u r n s;)第9套填空题给定程序的功能是分别统计字符串中大写字母和小写字母的个数。例如,给字符串SS输入:Aa a a BBb l 23CCccccd,则输出结果应为:u p p e r=5,l o w e r=9。请勿改动主函数m a i n 和其他函数中的任何内容,仅在f u n 函数的横线上填入所编写的若干表达式或语句。试题程序:#i n cl u d e v o i d f u n (ch a r *s,i n t *a,i n t *b)w h i l e (*s)i f (*s =A&*s 二 Z)1;i f (*s=,a&*s=z )2;s+;)m a i n()(ch a r s 100;i n t u p p e r =0,l o w e r =0;p r i n t f (z,n Pl e a s e a s t r i n g :);g e t s(s);f u n(s,&u p p e r,&l o w e r);p r i n t f (z/n u p p e r =%d l o w e r =%d n ,_ _ _ 3_ _ _);)第 1 处填空:(*a)+或+(*a)或*=*a+1 或*a+=l第2 处填空:(*b)+或+(*b)或*b=*b+1 或*b+=l第3 处填空:u p p e r,l o w e r改错题下列给定程序中,函数f u n 的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在行参a v e r 所指的存储单元中。例如,若输入8 名学生的成绩:80.5 60 72 90.5 98 51.5 88 64则低于平均分的学生人数为4(平均分为:75.5625).请改正程序中的错误,使程序能统计出正确的结果。注意:不要改动m a i n 函数,不得增行或删行,也不得更改程序的结构!试题程序:t t i n cl u d e#i n cl u d e#d e f i n e N 20i n t f u n(f l o a t *s,i n t n,f l o a t *a v e r)(f l o a t a v e,t =0.0;i n t co u n t =0,k,i;/*f o t i n d*/f o r (k=0;k n;k+)t =s k ;a v e =t/n;f o r (i=0;i n;i+)i f (s i a v e)co u n t+;/*f o u n d*/*a v e r =&a v e;r e t u r n co u n t;)m a i n()(f l o a t s 30,a v e r;i n t m,i;p r i n t f (z,n Pl e a s e e n t e r m:);s ca n f (%d ,&m);p r i n t f CAn Pl e a s e e n t e r%d m a r k :n ,m);f o r (i=0;i n。P=!()!n m nm例如:m=如,n=8 时,运行结果为4 9 5.0 0 0 0 0 0注意:部分源程序给出如下。请勿改动主函数m ai n和其他函数中的任何内容,仅在函数fu n的花括号中填入所编写的若干语句。试题程序:#i ncl u de#i ncl u de fl oat fu n(i nt m,i nt n)()m ai n()(F I L E *ou t;pr i nt f C P=%fnz,,fu n(1 2,8);ou t =fopen(z,ou t.dat,z,w );fpr i nt f(ou t,fu n(1 2,6);fcl os e(ou t);)答案是:fl oat fu n(i nt m,i nt n)fl oat p,t=l.0;i nt i;for (i=l;i =m;i+)t=t*i;P=t;for(t=l.0,i=l;i =n;i+)t=t*i;p=p/t;for (t=l.0,i=l;i =m-n;i+)t=t*i;p=p/t;r et u r n p;)第10套填空题