您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > C语言程序设计习题及答案
《C语言程序设计》上机考试复习题1.编写程序:输入m个人的成绩并存放在score数组中,求低于平均分的人数,将低于平均分的分数放在below数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,人数应该是4,below中的数据应为10、20、30、40。#includestdlib.h#includeconio.h#includestdio.h#includestring.hintfun(intscore[],intm,intbelow[]){}voidmain(){inti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90};system(CLS);n=fun(score,9,below);printf(\nBelowtheaveragescoreare:);for(i=0;in;i++)printf(%d,below[i]);}intfun(intscore[],intm,intbelow[]){inti,j=0;floatav=0.0;for(i=0;im;i++)av=av+score[i]/m;/*求平均值*/for(i=0;im;i++)if(score[i]av)/*如果分数低于平均分,则将此分数放入below数组中*/below[j++]=score[i];returnj;/*返回低于平均分的人数*/}**************************************************2.请编写程序,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a数组中,并求这些数的个数。#includestdlib.h#includeconio.h#includestdio.hvoidfun(int*a,int*n){}voidmain(){intaa[1000],n,k;system(CLS);fun(aa,&n);for(k=0;kn;k++)if((k+1)%10==0){printf(%5d,aa[k]);printf(\n);}/*一行写9个数*/elseprintf(%5d,aa[k]);}voidfun(int*a,int*n){inti,j=0;for(i=1;i=1000;i++)/*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;/*传回满足条件的数的个数*/}**************************************************3.请编写一个程序将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入:17,5,则应输出:19,23,29,31,37。#includestdlib.h#includeconio.h#includestdio.hvoidfun(intm,intk,intxx[]){}voidmain(){intm,n,zz[1000];system(CLS);printf(\nPleaseentertwointegers:);scanf(%d%d,&m,&n);fun(m,n,zz);for(m=0;mn;m++)printf(%d,zz[m]);printf(\n);}voidfun(intm,intk,intxx[]){inti,j,n;for(i=m+1,n=0;nk;i++)/*找大于m的素数,循环k次,即找出紧靠m的k个素数*/{for(j=2;ji;j++)/*判断一个数是否为素数,如果不是,跳出此循环,判断下一个数*/if(i%j==0)break;if(j=i)/*如果是素数,放入数组xx中*/xx[n++]=i;}}**************************************************4.请编写一个程序:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串World,然后输入3,则结果为Word。#includestdlib.h#includestdio.h#includeconio.h#defineLEN20voidfun(chara[],charb[],intn){}voidmain(){charstr1[LEN],str2[LEN];intn;system(CLS);printf(Enterthestring:\n);gets(str1);printf(Enterthepositionofthestringdeleted:);scanf(%d,&n);fun(str1,str2,n);printf(Thenewstringis:%s\n,str2);}voidfun(chara[],charb[],intn){inti,k=0;for(i=0;a[i]!='\0';i++)if(i!=n)/*将不是指定下标的字符存入数组b中*/b[k++]=a[i];b[k]='\0';/*在字符串最后加上结束标记*/}**************************************************5.请编写一个程序用来求出数组的最大元素及其在数组中的下标例如,输入如下整数:87667589610l30l40l98043l451777,则输出结果为:6,980。#includestdlib.h#includeconio.h#includestdio.hintfun(int*s,intt,int*k){}voidmain(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;system(CLS);fun(a,10,&k);printf(%d,%d\n,k,a[k]);}intfun(int*s,intt,int*k){inti;*k=0;/*k所指的数是数组的下标值*/for(i=0;it;i++)if(s[*k]s[i])*k=i;/*找到数组的最大元素,把该元素的下标赋给k所指的数*/returns[*k];/*返回数组的最大元素*/}**************************************************6.编写程序功能是:根据以下公式计算s,n通过键盘输入。S=1+1/(1+2)+1/(1+2+3)+……1/(1+2+3+…+n)例如:若n的值为11时,函数的值为1.833333。#includestdlib.h#includeconio.h#includestdio.h#includestring.hfloatfun(intn){}voidmain(){intn;floats;system(CLS);printf(\nPleaseenterN:);scanf(%d,&n);s=fun(n);printf(Theresultis:%f\n,s);}floatfun(intn){inti,s1=0;floats=0.0;for(i=1;i=n;i++){s1=s1+i;/*求每一项的分母*/s=s+1.0/s1;/*求多项式的值*/}returns;}**************************************************7.编写程序:根据以下公式求P的值,m与n为两个正整数且要求mn。例如:m=12,n=8时,运行结果为495.000000。#includeconio.h#includestdio.h#includestdlib.hfloatfun(intm,intn){}voidmain(){system(CLS);printf(p=%f\n,fun(12,8));}floatfun(intm,intn){inti;doublep=1.0;for(i=1;i=m;i++)p=p*i;/*求m!*/for(i=1;i=n;i++)p=p/i;/*求m!/n!*/for(i=1;i=m-n;i++)p=p/i;/*求m!/(n!(m-n)!)*/returnp;}**************************************************8.定义了NXN的二维数组,在主函数中赋值。求出数组周边元素的平均值。例如:若a数组中的值为:,则s的值应为3.375。#includestdio.h#includeconio.h#includestdlib.h#defineN5doublefun(intw[][N]){}voidmain(){inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};inti,j;doubles;system(CLS);printf(*****Thearray*****\n);for(i=0;iN;i++){for(j=0;jN;j++){printf(%4d,a[i][j]);}printf(\n);}s=fun(a);printf(*****THERESULT*****\n);printf(Thesumis:%lf\n,s);}doublefun(intw[][N]){inti,j,k=0;doubleav=0.0;for(i=0;iN;i++)for(j=0;jN;j++)if(i==0||i==N-1||j==0||j==N-1)/*只要下标中有一个为0或N-1,则它一定是周边元素*/{av=av+w[i][j];/*将周边元素求和*/k++;}returnav/k;/*求周边元素的平均值*/}**************************************************9.请编一个程序,定义一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在初始化时赋予。p=m!/n!(m-n)!floatfun(intm,intn){floatp,t=1.0;inti;for(i=1;i=m;i++)t=t*i;p=t;for(t=1.0,i=1;i=n;i++)t=t*i;p=p/t;for(t=1.0,i=1;im-n;i++)t=t*i;p=p/t;returnp;}*****************************************************10.请编一个程序,功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcdefg,最后串中的内容为gfedcba。#includestring.h#includeconio.h#includestdio.h#defineN81voidfun(char*s){}main(){chara[N];printf(Enterastring:);gets(a);printf(Theoriginalstringis:);puts(a);fun(a);printf(\n);printf(Thestringaftermodified:);puts(a);strcpy(a,Helloworld!);fun(a);}voidfun(char*s){charch;inti,m,n;i=0;m=n=strlen(s)-1;while(i(n+1)/2){ch=s[i];s[i]=s[m];s[m]=ch;i++;m--;}}**************************************************11.求出小于或等于lim的所有素数并放在aa数组中,并求出的素数的个数。#includ
本文标题:C语言程序设计习题及答案
链接地址:https://www.777doc.com/doc-2908124 .html