C语言期末考试题库试题及答案.pdf
《C语言期末考试题库试题及答案.pdf》由会员分享,可在线阅读,更多相关《C语言期末考试题库试题及答案.pdf(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1【程序填空】题目:下面函数为二分法查找key值。数组中元素已递增排序,若找到key则返回对应的下标,否则返回-1。*/#includefun(int a,int n,int key)int low,high,mid;ow=0;high=n-l;/*SPACE*/while(low=high )mid=(low+high)/2;/*SPACE*/if(keyafmid)low=mid+1 ;/*SPACE*/else return(mid);)return-1;)void main()int al0=123,4,5,6,7,8,9 0;int b,c;b=4;c=fun(a,10,b);if(
2、c=-1 )printf(*not found(1);else printf(position%dnu,c);)/*-2【程序填空】*/#includevoid main()int n,i;float t;printf(nplease input n(n=0):n);/*SP/CE*/scanf(%d,&n );i=l;t=1.0;/*SPACE*/while(i=n)/*SpycE*/t*=ii+;)printfC%d!=%r,n,t);a/*-3【程序填空】题目:以下程序的功能是统计个字符串中的字母、数字、空格、和其它字符的个数。-*/#include ustdio.hmain()char
3、 sl80;int a4=0;int k;/*SPACE*/void fun(char s,int);gets(sl);/*SPACE*/fun(sl,a)J;puts(sl);for(k=0;k4;k+)printf(n%4d,akl);void fun(char s,int bf)int i;for(i=0;si!=0;i+)if(,a,=si&si=zllA,=si&si0,=si&si=,9,)blj+;/*SPACE*/else if(si=32)b2+;else b3+;/*-4【程序填空】*/#include#include math.hvoid main()int m,i,k;
4、scanf(%dn,&m);/*SPACE*/for(i=2;i k)printf(uYesn);elseprintf(HNonM);/*-5【程序填空】题目:以下程序的功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。*/#include/*SPACE*/int fun(int k )int m=0,mc=0;/*SPACE*/while(k =2&mc 1 0 1 )/*SP/C E*/if(k%1 3=OI I k%1 7=0 1 )m =m+k;mc+;k-;)/*SPACE*/return(m);void main()printf(%dn,fun(5 0 0);/
5、*-6【程序填空】题目:输入N个数据存入数组中,将其倒置存放,并打印输1 1 1。|Qi(匚二::I-:,.:/川 二7【程序填空】题 目:输 出 Fibonacci数列的前15项,要求每行输出5 项。Fibonacci 数列*/#include void main()/*SPACE*/int fib 15,i;fibO=l;fibl=l;for(i=2;i15;i+)/*SPACE*/*-8【程序填空】题目:以下程序的功能是求100999之间的水仙花数(水仙花数是指一个三位数的各个位数字的立方和是这个数本身,如:153=1A3+5A3+3A3)*/#includeint fun(int n)
6、int i,j,k,m;m=n;/*SPACE*/k=0for(i=l;i4;i+)/*SPACE*/j=m%10m=(m-j)/10;k=k+j*j*j;/*SP/CE*/if(k=n)return(l)else return(O);)void main()(int i;for(i=100;i1000;i+)/*SPACE*/if(fun(i)=l)printf(%d is ok!n,i);9【程序填空】题11:次次大奖赛.仃i o个评委打分,卜间的科十足对 名参赛者评分.输入i o个:-:*/#includevoid main()float mark,max,min,aver=0.0,su
7、m=0.0;int i;fbr(i=1 ;i=10;i+)printf(输入第%d位评委的打分n*i);scanf(u%f&mark);max=mark,*SPA(、E*,min=mark else if(markmax)max=marksum+=mark;hver=(suin-max-min)/8printf(The Average score is%fn,aver);1 0【程序填空】题目:输出9*9 口诀。*/#includevoid main()int i,j,result;printf(,nH);/*SPACE*/for(i=1;i10;i+)/*SPACE*/for(j=l;j10
8、;j+)result=i*j;/*SPACE*/printf(%d*%d=%-3d,ij,result);)printf(n);)/*-11【程序填空】甄11:用辗转相除法求两个整数的最大公约数、最小公倍数二*/#includevoid main()int n,m,nm,r,t;printf(Enter m,n=?n);scanf(M%d%dM,&m,&n);nm=n*m;if(mn)t=m;m=n;n=t;r=m%n;/*SPACE*次/while(r!=0)m=nprintf(The max Gyshu=%dn,n);printf(The min Gbshu=%dn,nm/n);12【程序
9、填空】#define N 7#includevoid main()static int aN=12,9,16,5,7,2,1),k,s;printf(n the origanal array:n);for(k=0;kN;k+)printf(%4d,afk);/*SPACE*/printf(n the changed array:nH);for(k=0;kN;k+)/*SPACE*/printf(%4d,ak);1 3【程序填空】*/#includevoid main()int a,b,c,max;printf(input three numbers:);scanf(n%d%d%dn,&a,&b
10、,&c);/*SP/CE*/if(a b)max=a;/*SPACE*/elsemax=b;if(maxc)/*SPACE*/L max=c Jprintf(,max=%dn,max);/*-1 4【程序填空】*/#includevoid main()int x,y,z,t;scanf(n%d%d%dM,&x,&y,&z);if(xy)/*SP/CE*/t=x;x=y;y=t;if(xz)/*SPACE*/t=z;z=x;x=t;if(yz)/*SPACE*/t=y;y=z;z=l;)printf(Msmall to big:%d%d%dn,x,y,z);)15【程序填空】题目:打印出如下图案
11、(菱形)*-*/#includevoid main()int i,j,k;*木 SPACE*摩*,piiniiC JMIHMMM/*字*SPACE小*字*116【程序填空】也I I:以卜口匕 计 I high以内出()J之和,high由主函数传给fun函数,若 high的值为100,则函数的值为732。-*/#include#include int fun(ini high)int sum=0,n=0,j,yes;/*SP/CE*/while(high=2)&(n 10)yes=1;for(j=2;j/CE*/yes=0;break;)if(yes)sum+=high;n+;high-;/*S
12、P/CE*/return(sum);)void main()(printf(,%dnn,fun(100);1 7【程序填空】题目:输入如下形式的二项式系数列标。要求表的行数运行时输入,若小于1或者大于10则重新输入。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1-*/#includevoid main()(int a1 0 ri0=0 ,i,j,n;while(scanf(%d,&n),n 1 0);for(i=0;i 1 0;i+)ai0=l;/*SP/C E*/aii=l;for(i=0;i n;i+)for(j=0;j=i;j+)printf(%4d,ai|
13、j);次*SP/C E*printf(n);1 8【程序改错】题目:函数f u n的功能是:求1到20的阶乘的和。请改正程序中的错误,使它能得出正确的结果。注意:不可以增加或删除程序行,也不可以更改程序的结构。.*/fun()int n,j;double s=0.0,t=1.0;for(n=1 ;n=2 0;n+)t=l;for(j=l;j=n;j+)/*FOUND*/t=t*j;/*FOUND*/s=s+t;/*FOUND*/printf(njiecheng=%fnM,s);)main()fun();I1 9【程序改错】题目:给定程序MODILC中函数fu n 的功能是:用选择法对数组中的n
14、 个元素按从小到大的顺序进行排序。注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include#define N 20void fun(int a,int n)inti,j,t,p;for(j=0;j n-1;j+)/*FOUND*/p=j;for(i=j;i n;i+)/*FOUND*/if(ai ap)/*FOUND*/P=i;t=afp;ap=aj;aj=t;)void main()int aN=9,6,8,3,-l,i,m=5;printf(排序前的数据:);for(i=0;i m;i+)printf(%d n,ai);printf(nnn);fun(a,m);prin
15、tf(排序后的数据:“);for(i=0;i m;i+)printf(%d,ai);printf(n);)2 0【程序改错】题目:编写函数fun,求两个整数的最小公倍数,然后用主函数main。调用这个函数并输出结果,两个整数由键盘输入。注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。.*/#include stdio.hvoid main()(unsigned int m,n,q;printf(nm,n=n);scanf(%d,%d,&m,&n);/*FOUND*/q=fun(m,n);printf(,p(%d,%d)=%d
16、,m,n,q);int fun(int m,int n)int i;/*FOUND*/if(mn)i=m;m=n;n=i;for(i=m;i=m*n;i+=m)/*FOUND*/if(i%n=0)return(i);2 1【程序改错】题目:下列程序中,函数fun的功能是:找出一个大于给定整数m 且紧随m 的素数,并作为函数值返回。注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include#includeint fun(int m)/*FOUND*/int i,k;for(i=m+l;i+)for(k=2;ki;k+)/*FOUND*/if(i%k=O)break;/*FOUN
17、D*/if(k=i)return(i);)void main()(int n;printf(nPlease enter n:n);scanf(u%dH,&n);printf(H%dnn,fun(n);2 2【程序改错】题目:打印出如卜.杨辉三角形(要求打印出6 行).11 11 2 113 3 11 4 6 4 11 5 10 10 51注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#includestdio.hvoid main()int i,j;int a66;printf(nnn);/*FOUND*/for(i=0;i6;i+)ai0=l;aii=l;)/*FOUND*/f
18、or(i=2;i6;i+)for(j=l;ji;j+)/*FOUND*/aij=ai-lj-l+ai-lj;for(i=0;i6;i+)/*FOUND*/for(j=0;j=i;j+)printf(M%5dn,aij);printf(nH);)2 3【程序改错】题目:给定程序MODI1.C中 函 数 fu n 的功能是:计算正整数num的各位上的数字之积。例如,若输入:2 5 2,则输出应该是:20。若输入:2 0 2,则输出应该是:0。注意:不可以增加或删除程序行,也不可以更改程序的结构。*/#include long fun(long num)/*FOUND*/long k=l;do k*
19、=num%10;/*FOUND*/num/=10;/*FOUND*/while(num);return(k);void main()long n;printf(Please enter a number:);scanf(%ld,&n);printf(n%ldn,fun(n);2 4【程序改错】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到 第 10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#i
20、ncludestdio.hvoid main()(int day,x l,x2;day=9;/*FOUND*/x2=l;while(day0)/*FOUND*/x 1=(x2+1)*2;x2=x1;/*FOUND*/day;)printf(Hthe total is%dn,xl);/*-2 5【程序改错】题目:一个5 位数,判断它是不是回文数。即 12321是回文数,个位与万位相同,十位与千位相同。注意:不可以增加或删除程序行,也不可以更改程序的结构。*/#includeHstdio.hvoid main()/*FOUND*/long ge,shi,qian,wan,x;scanf(n%ldn
21、,&x);/*FOUND*/wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;/*FOUND*/if(ge=wan&shi=qian)printf(this number is a huiwennu);elseprintf(Hthis number is not a huiwennn);)2 6【程序改错】题目:编写函数fun求 2 0 以内所有5 的倍数之积。注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#define N 20#include stdio.hvoid main()int sum;sum=fun(5);prin
22、tf(M%d以内所有 1的倍数之积为:dn”,N,5,sum);int fun(int m)/*FOUND*/int s=l,i;for(i=l;iN;i+)/*FOUND*/if(i%m=0)/*FOUND*/s=s*i;return s;2 7【程序改错】题目:请编写一个函数fu n,函数的功能是:统计出若干个学生的平均成绩,最低分以及得最低分的人数。例如,输 入 10名学生的成绩分别为92,87,68,56,92,84,67,75,92,6 6,则输出平均成绩为77.9,最低分为5 6,得最低分的人数为1人。注意:不可以增加或删除程序行,也不可以更改程序的结构。.*/#include s
23、tdio.hfloat Min=0;int J=0;float fun(float arraylJ,int n)int i;float sum=0,ave;Min=arrayO;for(i=0;iarray i)Min=array i;/*FOUND*/sum=sum+arrayi;/*FOUND*/ave=sum/n;for(i=0;in;i+)/*FOUND*/if(arrayi=Min)J+;return(ave);void m a in()(float a101,ave;int i=0;printfCInput 10 scores:nn);for(i=0;i10;i+)scanf(H%
24、f,&ai);ave=fun(a,10);printf(n a ve=%fn,ave);printf(min=%fn,Min);printf(Total:%dnH,J);2 8【程序改错】题目:有一数组内放10个整数,要求求出平均值,并打印.注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#includefloat average(float array10)inti;float aver,sum=an ay 10J;/*FOUND*/for(i=1 ;i 10;i+)sum=sum+aiTayi;aver二sum/10.0;return(aver);)void main()/*F
25、OUND*/float score 10,a ver;int i;printf(ninput 10 scores:n);for(i=0;i10;i+)/*FOUND*/scanf(,%f,&scorei);printfC1);/*FOUND*/a ver=a verage(score);printfCaverage score is%5.2f,aver);/*-2 9【程序改错】题目:利用递归方法求5!。注意:不可以增加或删除程序行,也不可以更改程序的结构。.*/#include void main()int fact(int j);printf(M5!=%dn,fact(5);int fac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末考试 题库 试题 答案
限制150内