2018年二级C南开100题编程题.docx
1:第1题m个人的成绩存放在SCore数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。答案:intfun(intscore,intm,intbelow)(inti,k=0,aver=O;for(i=0;i<m;i+)aver+=scorei;aver=m;for(i=0;i<m;i+)if(scorei<aver)(belowk=scori;k+;)returnk;)第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。答案:voidfun(int*a,int*n)(inti,j=0;for(i=2;i<1000;i)if(i%7=011i%ll=0)&&i%77!=0)aj=i;n=j;)3:第3题请编写函数voidfun(intx,intPP,int*n),它的功能是:求出能整除X且不是偶数的各整数,并按从小到大的顺序放在PP所指的数组中,这些除数的个数通过形参n返回。答案:voidfun(intx,intPP,int*n)(inti=l,j=O;k=O,t=pp;for(i=0;i<=x;i+)if(i%2!=0)(tj=I;j;)for(i=0u<ji)if(x%ti=0)(ppk=ti;k;)*n=k;)第4题请编写一个函数voidfun(char*tt,intpp口),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在PP所指的数组中。答案:voidfun(char*tt,intPP11)(inti;for(i=0u<26u)ppi=;while(*tt)(switch(*tt)(caseia,:PP0+;break;case'b':PP1+;break;casetc,:.PP2+;break;case'd':PP3+;break;caseie,:PP4+;break;case'f':PP5+;break;casetgf:PP6+;break;case'h':pp7+;break;case*i,:PP8+;break;case'j':PP9+;break;case'k':pp10+;break;casetlf:pp11+;break;case'm':pp12÷+;break;case4n,:pp12+;break;caseio,:pp14+;break;case'p':PP15+;break;case'q':pp16+;break;casetrt:pp17+;break;case's':pp18+;break;case't':pp19+;break;case*u,:pp20+;break;case'v':pp21+;break;case'w':pp22+;break;case'x':pp23+;break;case'y':pp24+;break;case:pp25+;break;)tt;)5:第5题请编写一个函数voidfun(intm,intk,intxx口),该函数的功能是:将大于整数m且紧靠In的k各素数存入XX所指的数组中。答案:voidfun(intm,intk,intxx)(bj='0'p=m!n!(m-n)!intg=0,1,j,fIag=I;)答案:for(i=m+l;i<m*m;i+)第7题请编写一个函数floatfun(intm,intn)(intfun(int*s,intt,int(for(j=0;j<I;j+)*k),用来求除数组的最大floatp,t=l.0;(元素在数组中的下标并存intI;if(i%j!=O)放在k所指的储存单元中。for(i=l;i<=m;i+)fIag=I;答案:t=t*I;elsevoidfun(int*s,intt,P=t;(int*k)for(t=l.0,i=l;i<=n;i+)fIag=O;(t=t*I;break;intI,max;p=pt;)max=s0;for(t=l.0,i=l;i<)for(i=0u<ti)=m-n;i+)if(flag=l&&j>=i)if(si>max)t=t*I;(p=pt;if(k>=0)max=si;returnp;(*k=I;)g+=i;)10:第io题编写函数fun,k一;)它的功能是:利用以下的简)第8题编写函数fun,功能单迭代方法求方程else是:根据以下攻势计算s,cos(x)-X=O的一个实根。break;计算结果作为函数值返回;迭代步骤如下:(1)取Xl初)n通过形参传入。值为0.0;(2)x0=xl,把xl第6题请编写一个函数S=l+1(1+2)+1/(1+2+3)+的值赋各xO;voidfun(char.+1/(1+2+3+4+n)(3)xl=cos(x),求出一个a,char,intn),其功能答案:新的xl;是:删除以各字符串中指定floatfun(intn)(4)假设Xo-Xl的绝对值小下标的字符。其中,a指向(于0.OoooOL那么执行步骤原字符串,删除后的字符串inti;(5),否那么执行步骤(2);存放在b所指的数组中,nfloats=l.0,t=l.0;(5)所求xl就是方程中存放指定的下标。for(i=2u<=na)cos(x)-X=O的一个实根,作答案:(为函数值返回。voidfun(chara,chart=t+i;程序将输出b,intn)s=s+lt;root=0.739085O()答案:intI,j=0;returns;floatfun()for(i=0i<LENU)(if(i|=n)9:第9题编写一个函数floatxl=0.0,x;(fun,它的功能是:根据以dobj=ai;下公式求P的值,结果由函(j+;数值带回。M与n为两个正x=xl;)整数,且要求m>n°xl=cos(x);)while(fabs(x-xl)>le-6);returnxl;11:第H题以下程序定义了nXn的二维数组,并在主函数中自动赋值。请编写函数fun(intan),该函数的功能是:使数组左下半三角元素中的值全部置成0。答案:intfun(intaN)(intI,j;for(i=0;i<N;i+)for(j=0;j<=I;j+)aij=0;)12:第12题以下程序定义了nXn的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的So答案:doublefun(intwN)(intI,j,k=0;doubles=0.0;for(j=0;j<N;j+)(s+=w0j;k+;)for(j=0;j<N;j+)(s+=wN-lj;k+;)for(i=l;i<=N-2;i+)(s+=wi0;k+;for(i=l;i<=N-2;i+)(s+=wiN-l;k+÷)returns=k;)13:第13题请编写一个函数Voidfun(intttmn,intppn),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入PP所指定一维数组中。二维数组中的数已在主函数中赋予。答案:voidfun(intttMN,intppN)(intI,j,min;for(j=0;j<N;j+)(min=tt0j;for(i=0a<Mu)(迂(ttij<min)min=ttij;)ppj=min;)14:第14题请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。答案:intfun(intaMN)(intI,j,s=0;for(j=0;j<N;j+)s+=a0j;s+=aM-lj;)for(i=l;i<=M-2;i+)(s+=ai0;s+=aiN-l;)returns;)15:第15题请编写一个函unsignedfun(unsignedw),w使一个大于10的无符号整数,假设W使n(nN2)位的整数,那么函数求出W后n-l位的数作为函数值返回。答案:unsignedfun(unsignedw)(unsignedt,s=0,sl=l,P=O;t=w;while(t>10)(if(t10)p=t%10;s=s+p*sl;sl=sl*10;t=t10;returns;)16:第16题请编写一个函数floatfun(doubleh),函数的功能使对变量h中的值保存2位小树,并对第三位进展四舍五入(规定h中的值位正数)。答案:floatfun(floath)(longt;floats;h=h*1000;t=(h+5)10;s=(float)t100.0;returns;)17:第17题请编写一个函数fun(cha*s),该函数的功能使把字符串中的内容拟置。答案:voidfun(char*s)(charch;intI,叫n;i=0;m=n=strlen(s)-l;while(i<(n+l)2)(ch=si;si=sm;sm=ch;i+;m;)18:第18题编写程序,实现矩阵(3行3列)的转置(即行列互换)。答案:voidfun(intarray33)(intLj,temp;for(i=0;i<3;i+)for(j=0;j<I,j+)(temp=arrayij;arrayij=arrayji;arrayji=temp;)19:第19题编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。答案:voidfun(chars,intc)(inti=0;char*p;P=s;而ile(*p)(if(*p!=c)(si=*p;i;)P+;)si=t0,;)20:第20题编写函