南开二级C语言上机100题.docx
06年南开上机咫1:第I即m个人的成绩存放在乂。2数纲中,请端耳函数fun.它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中.答案:inifu11<i11tscore.inlm.i11tbelow()Iinti.k=0,avcr=0;forti=0:i<m;i+)ave+=scorei:avcr=m;for(i=0;i<m;i+)if(scoreij<aver)Ibclow(k=scorci:k+;returnk:2:第2题清第耳函数fun,它的功能是:求出I到100之内能北7或者Il整除,但不能同时北7和Il整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数.答案:voidfun(int*a.int*n)Iintij=0:for(i=2i<100Oii+)if«i%7=0|i%ll=0)&&i%77!=O)aj+=i:*n=j;3:第3时请编写函数VoidfUn(iniWnpp.in*n).它的功能是:求出能整除X旦不是偶数的各整数,并按从小到大的顷序放在pp所指的数组中,这线除数的个数通过的参n返回.答案:voidfu(intx.intpp(.in<*n)Iinti=lj=(kk=O.*t=pp:for(i=0;i<=x:i+)if(i%2!=0)tl=l;J+:Ifor(i=0;i<j;i+)if(x%tiJ=O)Ipp(k=t(i;k+;*n=k:4:第4即请编写一个函数voidl'un(char*tt.>ntppJ).统计在tt字符中"a,1到>“26各字母各自现的次数.并依次放在PP所指的数组中,答案:voidfun(char*H.intpp)(inti;for(i=0:i<26:i+)PPlib=0:while(*11)switchdll)Iease*a,:pp(O÷*brcak;case4b,:I+÷ibreak;easeaC:pp2)+break:eased:pp3+zbrcak:casetc9:pp4÷÷brcak;caseif9:(5+÷bak;casea,g:pp6+zbrcak;ease'h,:pp7+zbrcak:casetfI:pp8÷÷brcak;case,J:pp91÷÷break;casek,:pp10J+÷break:easeT:pp11+brcak:ease*m,:ppl2÷÷rcak;case,n':l2+brexkcase(O:pp|14)+:break;easetp,:pp15+brcak;caset,q:pp|6÷÷rcak;casei9r:pl7+÷break;case,s,:pp|18)+;break;case,t,:pl9+break;case'u":pp(20+zbre<tk;case'v':pp21j+:brcak;case'w':ppl22+;brcak:case,x,:p23+brek;case'y":pp|24+:break;case,z':pp(25+bccak;ll+;5:第5题请编写一个函数voidfun(intn.inlk.inlnx).该函数的功能是:将大于整数m且索推m的k各素数存入XX所指的数组中.答案:voidfun(intm.intk.iniXXlDIi11tg=O,Ij,tlag=l;forti=n+i<m*ni+)Ifortj=Oy<ly)if(i%j!=O)ag=l;elseflag=。:break:if(flag=1&&j>=i)Iif(k>=O)xx(g+=i;k-;elsebreak;6:第6题请编写一个函数VeidfUn(CharaOcharMintn).其功能是:删除以各字符审中指定下标的字符,其中,a指向原字符串,捌除后的字符串存放在b所指的数组中,n中存放指定的下标.答案:voidfu11(chara(.chart>(.i11tn)IintIj=O;for(i=0;i<1.EN;i+)if(i!=n>bj=ail;j+:bl=4'j0);7:第7题请编写一个函数intftn(int-Sjnt1.in1.k),用来求除数组的最大元素在数殂中的下标并存放在k所指的储存单元中。答案:voidfun(int*s,intt,int+k)IintI.max:max=s0:for(i=OJ<Ui+>if(si>nm)Inwc=s(i:*k=I;8:第8卷编写函数fun,功能是:根据以下攻势计算s.计算结果作为函数值返回:n通过形参传人.S=l+l(l+2)+l(1+2+3)+.+1/(1+2+3+4+n)答案:Iloatfun(intn>inti;oats=1.0,(=1.0;for(i=2:i<=n;i+l=l+i;s=s+lt;re(ums;9:第9超摭笃一个函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回.M与n为两个正整数.且要求m>n,p=m!n!(m-n)!答案:oalfun(intm.in(n)floatp,t=1.0;in”;for(i=l;i<=m;i+)t=tI;p=t;fort=l.0,i=l:i<=n;i+)t=lI;P=PMfor(t=l.(),i=l;i<=m-n;i+)t=t*I:P=P":returnp;10:第IoSS编写函数fun.它的功能是:利用以下的简照迭代方法求方程CoS(X)x=0的一个实根.迭代步骤如下:取Xl初值为0.0:(2)x0=xl,ft!xl的值赋各x;(3)x1=w(X0).求出一个新的xl:(4)若XO-XI的绝对值小于0.000001.则执行步骤(5).否则执行步骤:(5)所求Xl就是方程Cos(X)-X=O的一个实根,作为函数值返网.程序将输出root=0.739085,答窠:oatfun()Ioalx!=0.0.x0:doNo=NI;xI=cos(xO);uhile(!abs(x-xlP>lc-6>:returnxl;II:第U遨下列程序定义了Mn的二维数SI,并在主图数中自动程序.请编写函数fun(inan),该函效的功能是:使数组左下半三角元素中的位全部冏成0.答案:i11(fun(intaN)iniIJ:forti=0;i<N:i+)for(j=O0<=l+)ai)jl=O;12:第12即卜列程序定义了nXn的二维数汨,并在主函数中赋值,请编写函数fun.函数的功能使求出救组周边元索的平均值并作为函数值返回给主函数中的s.答案:doublefu11(intwN)Iin(lj,k=O;doubles=0.0;fortj=OJ<N+>s+=w0(j;k+;for(j=()y<Ny+)s+=wNlJj;k+;for(i=ki<=N-2J+)Is+=wi0:k+:forti=ki<=N2U+)s+=wi11N-l;k+;rcum=k;13:第13SS请编写"个函数Voidmn(inu(mJn1.intpn)t指向一个m行n列的二维函数坦,求出二维函数如堤列中最小元素,并依次放入PP所指定一堆数殂中。二维数组中的数己在主函数中赋予。答案:voidfun(in11(M(NJ.intPp(NDIintl,j.min:for(j=0;j<Ny*+)I11in=tt(Oj;forti=0;i<Mu)(if(UlilUlVmin)nin=ttij):>ppjl=min;14:笫14题请别写函数fun.函数的功能使求出二维数组周边元素之和,作为函数值返回.二堆做组中的值在主函数中赋予.答案:intfu11<inla(M)(N)IintIj3=0;for(j=0y<N+)Is+=a01Uhs+=aM-l;for(i=1;i<=M-2:i+)s+=aiO;s+=a(i(N-l);rv(ums:15:笫15题请编写一个函数unsignedfun(unsignedw).w使一个大于10的无符号整数,若W使n(n与2)位的整数.则函数求出W后n-l位的数作为函数值返回.答案:unsignedfun(unsignedW)Iunsigned(,s=0,s1=I,p-0;I二w:while(t>10)Iif(tIO)p=1%10;s=s+pi*sl;Sl=Sl"0:t=VIO;rvlums:16:第16题请阑写一个函数noalfun(doubICh),函数的功能使对变量h中的低保留2位小树井对第三位进行四舍五入(规定h中的值位正数).答案:floatiun(floath)long:oats:h=hl(XX):t=(h÷5)10;s=(oat100.O;returns:17:第17题请籁写一个函数ftm(dar%),该函数的功能使把字符串中的内容拟置答案:voidfun(char*s)charch;intl.m.n:i=O;n=n=s(rlen(s>-l;while(i<(n+y2)Ich=si;si=sm;sm=ch;i+:m-;18:第18题编写程序,实现矩阵(3行3列)的转置即行列互换)。答案:voidfun(inarray33)Iintlj.tcmp;for(i=0;i<3;i+)for(j=0;j<I,j+)Itemp=arrayiHj;arrayil(jl=aay(j11;a11ayUi=temp;19:第19即编”函数fun.该函数的功能是:从字符中IH除指定的字符,同一字母的大、小写按不同字符处理.答案:voidfun(chars.intc)inti=0;char'p:p=s:whilc(*p)if(tp!=c)s(i=*p:i+;p+;s(ij='W;20:第20JS编写函数intfun(intIim,intaanw,该函数的功能是求出小于或等于Iim的所有素数并放在aa数殂中,该函数返回所求的素数的个数,答案:in