《C语言期末考试题库试题及答案.doc》由会员分享,可在线阅读,更多相关《C语言期末考试题库试题及答案.doc(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1【程序填空】- 题目:下面函数为二分法查找key值。数组中元素已递增排序, 若找到key则返回对应的下标,否则返回-1。-*/#includefun(int a,int n,int key) int low,high,mid; low=0; high=n-1;/*SPACE*/ while(【low=high】) mid=(low+high)/2;/*SPACE*/ if(keyamid) 【low=mid+1】;/*SPACE*/ else 【return(mid)】; return -1;void main() int a10=1,2,3,4,5,6,7,8,9,10; int b,c;
2、 b=4; c=fun(a,10,b); if(c=-1)printf(not found); else printf(position %dn,c);/*-2 【程序填空】-题目:求n!,n值由键盘输入。-*/#include void main() int n,i; float t; printf(please input n(n=0):);/*SPACE*/ scanf(%d,【&n】); i=1; t=1.0;/*SPACE*/ while(【i=n】)/*SPACE*/ 【t*=i】 i+; printf(%d!=%f,n,t);a/*-3 【程序填空】-题目:以下程序的功能是统计一
3、个字符串中的字母、数字、空格、 和其它字符的个数。-*/#include stdio.hmain () char s180;int a4=0; int k;/*SPACE*/【void fun(char s,int)】; gets(s1);/*SPACE*/ 【fun(s1,a)】; puts(s1); for(k=0;k4;k+) printf(%4d,ak); void fun(char s,int b) int i; for (i=0;si!=0;i+) if (a=si&si=z|A=si&si=Z) b0+;/*SPACE*/ else if (【0=si&si=9】) b1+;/*
4、SPACE*/ else if (【si=32】 ) b2+; else b3+; /*-4 【程序填空】-题目:判断一个给定的整数是否为素数。-*/#include #include math.hvoid main( ) int m,i,k; scanf(%d,&m); k=sqrt(m);/*SPACE*/ for(i=2;【ik】) printf(Yesn); else printf(Non); /*-5 【程序填空】-题目:以下程序的功能:计算并输出500以内最大的10个能被 13或17整除的自然数之和。-*/#include /*SPACE*/int fun(【int k】 ) in
5、t m=0, mc=0;/*SPACE*/ while (k = 2 & 【mc10】) /*SPACE*/ if (k%13 = 0 | 【k%17=0】) m = m+ k; mc+; k-; /*SPACE*/ 【return(m)】;void main ( ) printf(%dn, fun (500);/*-6 【程序填空】-题目:输入N个数据存入数组中,将其倒置存放,并打印输出。-*/#include #define N 10void main( ) int i, t, aN; printf(Enter %d Numbers:n, N); for(i=0;iN;i+)/*SPACE
6、*/ scanf(%d,【&ai】);/*SPACE*/ for(i=0;i【n/2】;i+) t=ai;/*SPACE*/ ai=【an-i-1】; aN-i-1=t; for(i=0;iN;i+) printf(%d ,ai);/*-7 【程序填空】-题目:输出Fibonacci数列的前15项,要求每行输出5项。 Fibonacci数列:1,1,2,3,5,8,13.-*/#include void main()/*SPACE*/int 【fib】15,i;fib0=1;fib1=1;for (i=2;i15;i+)/*SPACE*/fibi=【fibi-2+fibi-1】;for(i=0
7、;i15;i+)printf(%dt,fibi);/*SPACE*/if ( 【i%5=4】 ) printf(n);/*-8 【程序填空】-题目:以下程序的功能是求100999之间的水仙花数(水仙花数 是指一个三位数的各个位数字的立方和是这个数本身, 如:153135333)。-*/#includeint fun(int n) int i,j,k,m; m=n;/*SPACE*/ 【k=0】 for(i=1;i4;i+) /*SPACE*/ 【j=m%10】 m=(m-j)/10; k=k+j*j*j; /*SPACE*/ if(k=n) 【return(1)】 else return(0)
8、;void main() int i; for(i=100;i1000;i+)/*SPACE*/ if(【fun(i)】=1)printf(%d is ok!n ,i);/*-9 【程序填空】-题目:某次大奖赛,有10个评委打分,下面的程序是对一名参赛者评分,输入10个评委的打分分数,去掉一个最高分,一个最低分后,求出平均分即为该参赛者的得分。-*/#include void main() float mark,max,min,aver=0.0,sum=0.0; int i; for(i=1;i=10;i+) printf(输入第%d位评委的打分n,i); scanf(%f,&mark); i
9、f(i=1) max=mark;/*SPACE*/ 【min=mark】; else if(markmax】) max=mark;/*SPACE*/ 【sum+=mark】; aver=(sum-max-min)/8; printf(The Average score is %fn,aver);/*-10 【程序填空】-题目:输出9*9口诀。-*/#include void main()int i,j,result;printf(n);/*SPACE*/for (i=1;【i10】;i+)/*SPACE*/ for(j=1;j10;【j+】)result=i*j;/*SPACE*/printf
10、(%d*%d=%-3d,i,j,【result】);printf(n);/*-11【程序填空】-题目:用辗转相除法求两个整数的最大公约数、最小公倍数。-*/#include void main() int n,m,nm,r,t; printf(Enter m,n=?); scanf(%d%d,&m,&n); nm=n*m; if (mn) t=m; m=n; n=t; r=m%n;/*SPACE*/ while (【r!=0】) m=n;/*SPACE*/ 【n=r】/*SPACE*/ 【r=m%n】 printf(The max Gyshu=%dn,n);/*SPACE*/ printf(T
11、he min Gbshu=%dn, 【nm/n】); /*-12【程序填空】-题目:以下程序的功能是将一个数组中的元素按逆序存放。-*/#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,ak);/*SPACE*/ for (k=0;k【N/2】; k+ ) s=ak;/*SPACE*/ 【ak=aN-k-1】 ;/*SPACE*/ 【aN-k-1=s】 ; printf(n the change
12、d array:n); for (k=0;kN;k+)/*SPACE*/ 【printf】(%4d,ak);/*-13 【程序填空】-题目:输入3个整数,输出最大数。-*/#include void main( ) int a,b,c, max; printf(input three numbers: ); scanf(%d%d%d,&a,&b,&c);/*SPACE*/ if(【ab】) max=a; /*SPACE*/ 【else】 max=b; if(maxc) /*SPACE*/ 【max=c】 printf(max=%dn,max);/*-14 【程序填空】-题目:输入三个整数x,y
13、,z,请把这三个数由小到大输出。-*/#includevoid main()int x,y,z,t; scanf(%d%d%d,&x,&y,&z); if (xy)/*SPACE*/ 【t=x;x=y;y=t;】 if(xz)/*SPACE*/ 【t=z;z=x;x=t;】 if(yz)/*SPACE*/ 【t=y;y=z;z=t;】 printf(small to big: %d %d %dn,x,y,z);/*-15 【程序填空】-题目:打印出如下图案(菱形) * * * * * * *-*/#includevoid main()int i,j,k;/*SPACE*/for(i=0;【i4
14、】;i+) for(j=0;j=4-i;j+) printf( );/*SPACE*/ for(k=1;k=【2*i+1】;k+) printf(*); printf(n);/*SPACE*/for(【j=0】;j3;j+) for(k=0;kj+3;k+) printf( );/*SPACE*/ for(k=0;k【5-2*j】;k+) printf(*); printf(n);/*-16 【程序填空】-题目:以下程序的功能:计算并输出high以内最大的10个素数 之和,high由主函数传给fun函数,若high的值为100, 则函数的值为732。-*/#include #include i
15、nt fun( int high ) int sum = 0, n=0, j, yes;/*SPACE*/ while (high = 2) & (【n10】) yes = 1; for (j=2; j=high/2; j+ )/*SPACE*/ if (【high%j=0】)/*SPACE*/ yes=0; 【break】; if (yes) sum +=high; n+; high-; /*SPACE*/ 【return(sum)】;void main ( ) printf(%dn, fun (100);/*-17 【程序填空】-题目:输入如下形式的二项式系数列标。要求表的行数运行时输入,
16、 若小于1或者大于10则重新输入。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1-*/ #includevoid main() int a1010=0, i, j, n; while(scanf(%d,&n),n10); for(i=0;i10;i+) ai0=1; /*SPACE*/ 【aii=1】; for(i=2;in;i+) for(j=1;ji;j+)/*SPACE*/ aij=ai-1j+【ai-1j-1】; for(i=0;in;i+) for(j=0;j=i;j+) printf(%4d,aij); /*SPACE*/ 【printf(
17、n)】; /*- 18 【程序改错】-题目:函数fun的功能是:求1到20的阶乘的和。 请改正程序中的错误,使它能得出正确的结果。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/fun() int n,j; double s=0.0,t=1.0; for(n=1;n=20;n+) /*FOUND*/ t=1; for(j=1;j=n;j+)/*FOUND*/ t=t*j;/*FOUND*/ s=s+t; /*FOUND*/ printf(jiecheng=%fn,s);main() fun();/*- 19 【程序改错】-题目:给定程序MODI1.C中函数 fun 的功能是: 用
18、选择法对数组中的n个元素按从小到大 的顺序进行排序。-注意:不可以增加或删除程序行,也不可以更改程序的 结构。-*/#include #define N 20 void fun(int a, int n) int i, 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 = ap ; ap = aj ; aj = t;void main()int aN=9,6,8,3,-1,i, m = 5;printf(排序前的数据:) ;for(i = 0;i m
19、;i+) printf(%d ,ai); printf(n);fun(a,m);printf(排序后的数据:) ;for(i = 0;i m;i+) printf(%d ,ai); printf(n);/*-20【程序改错】-题目:编写函数fun,求两个整数的最小公倍数,然后用主 函数main()调用这个函数并输出结果,两个整数由 键盘输入。-注意:部分源程序给出如下。请勿改动主函数main和其 它函数中的任何内容,仅在函数fun的花括号中填 入所编写的若干语句。-*/#include stdio.hvoid main()unsigned int m,n,q;printf(m,n=);scan
20、f(%d,%d,&m,&n); /*FOUND*/q=fun(m,n);printf(p(%d,%d)=%d,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);/*- 21【程序改错】-题目:下列程序中,函数fun的功能是:找出一个大 于给定整数m且紧随m的素数,并作为函数值返回。-注意:不可以增加或删除程序行,也不可以更改程序的 结构。-*/#include#includeint fun(int m)/*FOUND*/ in
21、t i,k; for(i=m+1;i+) for(k=2;ki;k+)/*FOUND*/ if(i%k=0) break;/*FOUND*/ if(k=i) return(i); void main() int n; printf(nPlease enter n:); scanf(%d,&n); printf(%dn,fun(n); /*- 22 【程序改错】-题目:打印出如下杨辉三角形(要求打印出6行). 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1-注意:不可以增加或删除程序行,也不可以更改程 序的结构。-*/#includestdio.hvoid main() int i,j; int a66; printf(n); /*FOUND*/ for(i=0;i6;i+) ai0=1; aii=1; /*FOUND*/ for(i=2;i6;i+) for(j=1;ji;j+) /*FOUND*/ aij=ai-1j-1+ai-1j; for(i=0;i6;i+)