c语言国二考试编程题答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

-1-1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。第一个for循环用来计算score数组中分数的总和,然后用aver/=m求出平均值,第二个循环用来找出小于平均分的元素,并放到数组below中,这里要注意j的递增方式。#includestring.h#includeconio.h#includestdio.hintfun(intscore[],intm,intbelow[]){inti,j=0,aver=0;for(i=0;im;i++)aver+=score[i];aver/=m;for(i=0;im;i++)if(score[i]aver)below[j++]=score[i];returnj;}main(){inti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90};n=fun(score,9,below);printf(\nbelowtheaveragescoreare:);for(i=0;in;i++)printf(%4d,below[i]);}2.请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。该题关键就是如何表示能被7或11整除,但不能同时被7和11整除。用(i%7==0)||(i%11==0)来表示能被7或11整除,用!((i%7==0)&&(i%11==0))来表示不能同时被7和11整除。#includeconio.h#includestdio.hvoidfun(int*a,int*n){inti,m=0;for(i=1;i1000;i++)if(((i%7==0)||(i%11==0))&&!((i%7==0)&&(i%11==0))){a[m]=i;m+=1;}*n=m;}main(){intaa[1000],n,k;clrscr();-2-fun(aa,&n);for(k=0;kn;k++)if((k+1)%10==0)printf(\n);elseprintf(%d,,aa[k]);}3.请编写函数voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。由于要求的数不能是偶数故编程时从1开始循环而步长为2这样正好保正i永远的奇数。这里也要注意存放结果的数组pp的下标变化方式。#includeconio.h#includestdio.hvoidfun(intx,intpp[],int*n){inti,j=0;for(i=1;i=x;i=i+2)if(x%i==0)pp[j++]=i;*n=j;}main(){intx,aa[1000],n,i;printf(\npleaseenteranintegernumber:\n);scanf(%d,&x);fun(x,aa,&n);for(i=0;in;i++)printf(%d,aa[i]);}4.请编写一个函数voidfun(char*tt,intpp[]),统计在字符串中'a'到'z'26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000本题采用的是字母的ASCII码值与数组pp下标的对应转换关系分别求出对应字母的个数。第一个for是给pp赋初值0,第二个for用于控制在字符串内从头到尾移动。由于字母'a'的ASCII码值为97而它的个数要放在pp[0]中,而'a'-97的值正好为0。#includeconio.h#includestdio.hvoidfun(char*tt,intpp[]){inti;for(i=0;i26;i++)pp[i]=0;for(;*tt;tt++)if(*tt='z'&&*tt='a')pp[*tt-97]++;}main(){charaa[1000];-3-intbb[26],k;clrscr();printf(\nPleaseenteracharstring:);scanf(%s,aa);fun(aa,bb);for(k=0;k26;k++)printf(%d,bb[k]);printf(\n);}5.请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入:17,5,则应输出:19,23,29,31,37。本题中的for循环用来判断一个数是否为素数,由于个数只能是k个所以用do-while循环来控制。#includeconio.h#includestdio.hvoidfun(intm,intk,intxx[]){inti,j=0,p=m+1;do{for(i=2;ip;i++)if(p%i==0)break;if(i=p)xx[j++]=p;p++;}while(jk);}main(){intm,n,zz[1000];printf(\npleaseentertwointegers:);scanf(%d%d,&m,&n);fun(m,n,zz);for(m=0;mn;m++)printf(%d,zz[m]);}6.请编写一个函数voidfun(chara[],charb[],intn),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串World,然后输入3,则调用该函数后的结果为Word。#includestdio.h#includeconio.h#defineLEN20voidfun(chara[],charb[],intn){inti,k=0;for(i=0;a[i]!='\0';i++)if(i!=n)b[k++]=a[i];b[k]='\0';}-4-main(){FILE*wf;charstrl[LEN],str2[LEN];intn;printf(Enterthestring:\n);gets(strl);printf(Enterthepositiondeleted:);scanf(%d,&n);fun(strl,str2,n);printf(Thenewstringis:%s\n,str2);wf=fopen(out.dat,w);fun(world,str2,3);fprintf(wf,%s,str2);fclose(wf);}7.请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876675896101301401980431451777则输出结果为:6,980。#includeconio.h#includestdio.hintfun(int*s,intt,int*k){inti,max;max=s[0];for(i=0;it;i++)if(s[i]max){max=s[i];*k=i;}}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun(a,10,&k);printf(%d,%d\n,k,a[k]);}8.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n),例如:若n的值为11时,函数的值为1.833333。#includestdio.hfloatfun(intn){inti,sum=1;floats=1;for(i=2;i=n;i++){sum=sum+i;s=s+1.0/sum;}returns;}longchsdc(intn)-5-{inti,s;s=0;for(i=0;in;i++)s=s+i;return(s);}main(){intn;floats;printf(\nPleaseenterN:);scanf(%d,&n);s=fun(n);printf(theresultis:%f\n,s);}9.编写函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求mn。p=m!/n!(m-n)!。例如:m=12,n=8时,运行结果为495.000000。#includeconio.h#includestdio.hfloatfun(intm,intn){inti,j,k;longintt=1,s=1,p=1;floatq;for(i=1;i=m;i++)t*=i;for(j=1;j=n;j++)s*=j;for(k=1;k=m-n;k++)p*=k;q=(float)t/s/p;returnq;}main(){printf(\np=%lf\n,fun(12,8));}10.编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。Xn+1=cos(Xn)迭代步骤如下:(1)取x1初值为0.0;(2)x0=x1,把x1的值赋给x0;(3)x1=cos(x0),求出一个新的x1;(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出结果Root=0.739085。#includeconio.h#includemath.h#includestdio.hfloatfun(){floatx0,x1=0;do{x0=x1;-6-x1=cos(x0);}while(fabs(x0-x1)1e-006);returnx1;}main(){printf(root=%f\n,fun());}11.下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如:a数组中的值为该题的关键是如何表示出左下半角的元素,当从上往下到第i行时只有左边的i个元素要置为0(每行总是如此)。用外层for来控制行而内嵌的for来控制每行的左边元素,故而在内嵌for中j最大只能循环到i(即表示出第i行左边的i个元素)。197097a=238008456,则返回主程序后a数组中的值应为000。#includestdio.h#includeconio.h#includestdlib.h#defineN5intfun(inta[][N]){inti,j;for(i=0;iN;i++)for(j=0;j=i;j++)a[i][j]=0;}main(){inta[N][N],i,j;printf(***Thearray****\n);for(i=0;iN;i++)for(j=0;jN;j++){a[i][j]=rand()%10;printf(%4d,a[i][j]);}fun(a);printf(Theresult\n);for(i=0;iN;i++)for(j=0;jN;j++)printf(%4d,a[i][j]);}12.下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是

1 / 65
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功