百科园C语言题库.doc

上传人:s****u 文档编号:12809675 上传时间:2020-05-25 格式:DOC 页数:112 大小:758.35KB
返回 下载 相关 举报
百科园C语言题库.doc_第1页
第1页 / 共112页
百科园C语言题库.doc_第2页
第2页 / 共112页
百科园C语言题库.doc_第3页
第3页 / 共112页
点击查看更多>>
资源描述
第一章1.以下叙述中错误的是( )B.C语言编写的每个函数都可以进行独立编译并执行2. 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是( )A.C语言程序仅可以编译执行3. C语言规定:在一个源程序中,main的位置( ) A.可以任意4. 一个C语言程序是由( ) C.函数组成5. 以下关于结构化程序设计的叙述中正确的是( ) B.c语言中,程序的模块化是利用函数实现的6. 以下叙述正确的是( ) C.c语言本身没有输入和输出语句7. 以下叙述中错误的是( ) A.C语言编写的每个函数都可以进行独立编译并执行8. 以下叙述正确的是( )B.c程序中注释部分可以单独占一行9. 以下叙述正确的是( )D.c语言函数可以嵌套调用,如fun(fun(x)10. 一个C程序的执行是从( ) D.本程序main函数开始,到main函数结束11. 以下叙述不正确的是( )A在c程序中,注释说明只能位于一条语句后面第二章单项选择1以下选项中非法的字符常量是( )(B /019)2设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为( )(C double)3判断字符型变量c1是否为数字字符的正确表达式为( )(A (C1=0)&(C1k2)&(k2=k2k1)后,k1和k2的值分别为 ( )(B 0和20)5下面四个选项中,均是不合法的用户标识符的选项是( )。(B b-a goto int)6判断字符型变量c1是否为小写字母的正确表达式为( )。(B (c1=a)&(c1b) & (n=cd)后n的值为( )。(C 2)21若有数学式,则不正确的C语言表达式是( )(A 3*a*e/b*c) 第三章程序改错1/*下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。 例如,当n为5时,函数值应为10.407143。f(x)函数定义如下: f(x)= 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */#include #include #include /*ERROR*/f(double x) if(x=0.0|x=2.0) return 0.0; else if(x0.0) return(x-1)/(x-2); else return(x+1)/(x-2);double fun(int n) int i; double s=0.0,y; for(i=-n; i=n;i+) y=f(1.0*i); s+=y;/*ERROR*/ return svoid main() printf(%lfn, fun(5);参考答案double f(double x) return s;2./*下列给定程序中,函数fun的功能是:求三个数的最小公倍数。例如,给变量x1、x2、x3分别输入15、11、2,则输出结果应当是330。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: */#include int fun(int x,int y,int z) int j,t,n,m;/*ERROR*/ j=1; t=m=n=1;/*ERROR*/ while (t!=0 & m!=0 & n!=0) j=j+1;t=j%x;m=j%y;n=j%z; return j;void main() int x1,x2,x3,j; printf(Input x1 x2 x3: ); scanf(%d%d%d,&x1,&x2,&x3); printf(x1=%d,x2=%d,x3=%d n,x1,x2,x3); j=fun(x1,x2,x3); printf(The minimal common multiple is: %dn,j);参考答案 j=0; while (t!=0 | m!=0 | n!=0) 3/*下列程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/#include #include long fun(long num)/*ERROR*/ long k; do k *=num%10;/*ERROR*/num =10; while(num); return(k);void main() int n; printf(Please enter a number: ); scanf(%ld,&n); printf(n%ldn,fun(n);参考答案 long k=1; num/=10;4/*下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值: 请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: */#include #include double fun(int m)double y=1.0; int i;/*ERROR*/ for(i=2;im;i+) /*ERROR*/ y-=1/(i*i); return(y);void main()int n=5; printf(nThe result is %1fn, fun(n);参考答案 for(i=2;i=m;i+) y-=1.0/(i*i);5/*下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为4622。 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:*/#include #include int fun(int k) int m=0,mc=0, j; while(k=2)&(mc10) /*ERROR*/ if(k%13=0)|(k%17=0) m=m+k;mc+; k-;/*ERROR*/ ) return m;void main() printf(%dn ,fun(500); 参考答案 if(k%13=0)|(k%17=0) 6注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:*/#include #include #include double fun(int m) double t=1.0; int i; for(i=2;i=m;i+)/*ERROR*/ t+=1.0/k;/*ERROR*/ return i;void main()int m;printf(nPlease enter 1 integer number: ); scanf(%d,&m); printf(nThe result is %1fn, fun(m);参考答案 t+=1.0/i; return t; 7./*下列给定程序中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: */#include #include double fun(int n) double result =1.0;/*ERROR*/ if n=0 return 1.0; while(n1&n170)/*ERROR*/ result=n-; return result;void main() int n; printf(Input N:); scanf(%d,&n); printf(nn%d!=%lfn,n,fun(n);参考答案 if (n=0) result*=n-; 8/*下列给定程序中,函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main函数中,若fun()返回1则输出YES,若fun()返回0则输出NO!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: */#include #include int fun(int m) int k=2; while (k=m&(m%k)/*ERROR*/ k+ /*ERROR*/ if(m=k) return 1; else return 0;void main() int n; printf(nPlease enter n: );scanf(%d,&n); if(fun(n) printf(YESn); else printf(NO!n);参考答案 k+; if(k=m) 程序填空1 /*已知如下公式:下面程序的功能使根据上述公式输出满足精度要求的eps的值,请填空使程序完整。*/#include#includeint main ( ) double s=0.0,eps,t=1.0;int n ;scanf (%lf,&eps);for (n=1 ; t=fabs(eps); n+) s+=t ;/*FILL*/t= 1 ;/*FILL*/ 2 ;return 0;参考答案 t*n/(2*n+1) printf(%lfn,2*s) 2/*请补充main函数,该函数的功能是:打印出满足个位的数字、十位上的数字和百位上的数字都相等的所有三位数。本题的结果为: 111 222 333 444 555 666 777 888 999。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。试题程序:*/#include #include void main() int g, s, b; for(g=1; g10; g+)for (s=1; s10; s+)for(b=1; b10; b+) /*FILL*/if( ) /*FILL*/ printf(%5d, );参考答案g=s&s=b g+s*10+b*1003/*请补充main函数,该函数的功能是:打印出1-1000中满足个位数字的立方等于其本身所有数。本题的结果为:1 64 125 216 729 注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数main的横线上填入所编写的若干表达式或语句。试题程序:*/#include #include void main() int i,g; for(i=1;i1000;i+) /*FILL*/g= 1 ;/*FILL*/if( 2 )printf(%4d,i); 参考答案 g=i%10; if(g*g*g=i) 4/*函数fun的功能是:从三个形参a、b、c中找出中间的数,作为函数值返回。例如,当a=3,b=5,c=4时,中间的数为4。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:*/#include int fun(int a,int b,int c) int t;/*FILL*/ t=(ab)?(bc?b:(ac?c:【1】)/*FILL*/ :(ac)?【2】/*FILL*/ :(bc)?c:【3】); return t; void main() int a1=3,a2=5,a3=4,r; r=fun(a1,a2,a3); printf(nThe middle number is: %dn ,r);参考答案 t=(ab)?(bc?b:(ac?c:a) :(ac)?a :(bc)?c:b); 5/*给定程序的功能是:求二分之一圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:2,在程序中定义的变量名要与公式的变量相同)。 例如,输入圆的半径值:19.527,输出为:s=598.949991。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: */#include double fun( double r)/*FILL*/return 3.14159*1 /2.0;void main()double x;printf(Enter x: );/*FILL*/ scanf(%lf, 2 );/*FILL*/ printf(s=%lfn,fun( 3 );参考答案 return 3.14159*r*r/2.0; scanf(%lf,&x); printf(s=%lfn,fun(x);6例如,在主函数中从键盘给n输入30后,输出为:s=1.226323。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序: */#include double fun(int n) int i; double sum=0.0;/*FILL*/ for(i=1; 1 ;i+)/*FILL*/if(i%3=0 2 i%7=0)/*FILL*/sum+= 3 /i; return sum;void main() int n; double s; printf(nInput n:); scanf(%d,&n); s=fun(n); printf(nns=%fn,s);参考答案 for(i=1;i=n;i+) if(i%3=0|i%7=0) sum+=1.0/i; 7/*请补充main函数,该函数的功能是:计算两个自然数n和m(m10000)之间所有数的和(n和m从键盘输入)。 例如,当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。 注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。试题程序:*/#include #include void main() int n,m; long sum;/*FILL*/ 1 ; printf(nInput n,mn); scanf(%d,%d,&n,&m); while(n=m) /*FILL*/ 2 ;n+; /*FILL*/ printf(sum=% 3 n,sum);参考答案 sum=0; sum+=n; ld8/*请补充函数fun,该函数的功能是:判断某一个年份是否为闰年。 例如,1900年不是闰年,2004是闰年。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:*/#include #include int fun(int n) int flag=0; if(n%4=0) /*FILL*/if ( 1 )flag=1; /*FILL*/ if ( 2 )flag=1;/*FILL*/ return 3 ;void main() int year; printf(Input the year:); scanf(%d,&year); if (fun(year)printf(%d is a leap year. n,year); elseprintf(%d is not a leap year.n,year);参考答案 if(n%100!=0) if (n%400=0) return flag; 程序设计(无答案)1/*请编写函数fun,它的功能是:计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数之和。 例如,若主函数从键盘给n输入20后,则输出为s= 0.583333。注意:n的值要求不大于100。部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */#include double fun(int n)/*Begin*/*End*/void main() int n; double s; FILE *out,*in; printf(nInput n:); scanf(%d,&n); s=fun(n); printf(nns=%fn,s); /*/ in=fopen(in34.dat,r); out=fopen(out34.dat,w); fscanf(in,%dn,&n); fprintf(out,%fn,fun(n); fscanf(in,%dn,&n); fprintf(out,%fn,fun(n); fclose(out); /*/2/*请编写函数fun,该函数的功能是:计算并输出 S=1+(1+20.5)+(1+20.5+30.5)+(1+20.5+30.5+n0.5) 例如,若主函数从键盘给n输入20后,则输出为S=534.188884。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */#include#includedouble fun(int n)/*Begin*/*End*/ void main() FILE *wf,*in; int n; double s; printf(nnInput n: ); scanf(%d,&n); s=fun(n); printf(nns=%fnn,s);/*/ in=fopen(in32.dat,r); wf=fopen(out32.dat,w); fscanf(in,%dn,&n); fprintf(wf,%fn,fun(20); fscanf(in,%dn,&n); fprintf(wf,%fn,fun(40); fclose(in); fclose(wf);/*/3/*请编写函数fun,其功能是计算并输出如下多项式的值: Sn=l+1/1!+1/2!+1/3!+1/4!+1/n! 例如,若主函数从键盘给n输入15,则输出为S=2.718282。注意:n的值要求大于1但不大于100。部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include double fun(int n) /*Begin*/ /*End*/void main() int n; double s; FILE *out,*in; printf(nInput n: ); scanf(%d,&n); s=fun(n); printf(s=%fn,s); /*/ in=fopen(in31.dat,r); out=fopen(out31.dat,w); fscanf(in,%dn,&n); fprintf(out,%fn,fun(n); fscanf(in,%dn,&n); fprintf(out,%fn,fun(n); fclose(in); fclose(out); /*/4/*编写函数fun,它的功能是:计算和输出下列级数的和。S=1/(1x2)+1/(2x3)+.1/(nx(n+1) ,例如,当n=10时,函数值为0.909091。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */#include#includedouble fun(int n) /*Begin*/*End*/void main() FILE *wf,*in; int n; printf(%fn,fun(10);/*/ wf=fopen(out40.dat,w); in=fopen(in40.dat,r); fscanf(in,%dn,&n); fprintf(wf,%fn,fun(n); fclose(in); fclose(wf);/*/5/*请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。 例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。 注意:n的值要大于2但不大于100。部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include#includedouble fun(int n) /*Begin*/ /*End*/void main()int n; double sum; FILE *out,*in; printf(Input N=); scanf(%d,&n); sum=fun(n); printf(nnsum=%fnn,sum); /*/ in=fopen(in36.dat,r); out=fopen(out36.dat,w); fscanf(in,%dn,&n); fprintf(out,%fn,fun(n); fclose(in); fclose(out); /*/6/*请编写一个函数 unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n=2)位的整数,则函数求出w的后n-1位的数作为函数值返回。 例如,w值为5923,则函数返回923;若w值为923,则函数返回23。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include#includeunsigned fun(unsigned w)/*Begin*/*End*/void main() FILE *wf,*in; unsigned x; printf(Enter a unsigned integer number: ); scanf (%u,&x); printf(The original data is:%un,x); if(x3)的最小数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 假如:当t=1000时,函数值为1597。注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include #include int fun(int t) /*Begin*/ /*End*/void main() int n; FILE *out,*in; n=1000; printf(n=%d, f=%dn,n, fun(n); /*/ in=fopen(in39.dat,r); out=fopen(out39.dat,w); while(!feof(in) fscanf(in,%dn,&n); fprintf(out,%dn,fun(n); fclose(in); fclose(out); /*/8/*请编写函数fun,其功能是:计算并输出下列多项式值。 S=(1-1/2)+(1/3-1/4)+(1/(2n-1)-1/2n) 例如,若主函数从键盘给n输入8后,则输出为S= 0.662872。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */#includedouble fun(int n)/*Begin*/*End*/void main() FILE *wf,*in; int n; double s; printf(nInput n: ); scanf(%d,&n); s=fun(n); printf(ns=%fn ,s);/*/ in=fopen(in42.dat,r); wf=fopen(out42.dat,w); fscanf(in,%dn,&n); fprintf(wf,%fn,fun(10); fclose(in); fclose(wf);/*/9/*请编写一个函数fun,它的功能是:根据以下公式求的值(要求满足精度0.005,即某项小于0.005时停止迭代)。 /2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+1*2*3*n/(3*5*7*(2n+1) 程序运行后,如果输入精度0.005,则程序输出3.137130。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include #include #include double fun(double eps)/*Begin*/*End*/void main() double x; FILE *wf,*in; printf(Input eps: ); scanf(%lf,&x); printf(neps=%lf,PI=%lfn,x,fun(x);/*/ in=fopen(in37.dat,r); wf=fopen(out37.dat,w); fscanf(in,%lf,&x); fprintf (wf,%lfn,fun(x); fclose(in); fclose(wf);/*/10/*请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。S=1+x+x2/2!+x3/3!+xn/n! 例如,当n=10,x=0.3时,函数值为1.349859。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include#includedouble fun(double x, int n)/*Begin*/*End*/void main() FILE *wf,*in; double x; int n; printf(%f ,fun(0.3,10);/*/ in=fopen(in38.dat,r); wf=fopen(out38.dat,w); fscanf(in,%lf %dn,&x,&n); fprintf(wf,%fn,fun(x,n); fclose(in); fclose(wf);/*/第四章单项选择1下面的程序片断所表示的数学函数关系是(A)y = -1; if(x != 0) y = 1; if(x 0) y = 1;else y = 0;2以下程序的执行结果是main() (C.1) int x = 0, s = 0; while( !x != 0 ) s += +x; printf( %d ,s ); 3在下述程序中,判断i j共执行了多少次(C.6)#include main() int i = 0, j = 10, k = 2, s = 0; for( ; ; ) i += k; if(i j) printf(%dn, s); break; s += i; 4以下程序段的输出结果是(C.20)int i, j, m = 0;for(i = 1; i = 15; i += 4) for(j = 3; j = 19; j += 4) m+;printf(%dn, m);5执行下列语句后的输出为()(C.*) int j=-1; if(j=1) printf(*n); else printf(%n);6以下for循环的执行次数是 for(x=0,y=0;(y=123)&(x4);x+);(A.4次)7下列程序的输出结果是(A.a=2,b=1)main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; case 3:a+;b+;break; printf(a=%d,b=%dn,a,b);8以下程序的执行结果是_(A.1,2,3,). main() int num = 0; while( num b)a=b; if(ac)a=c; 则a的值为(A.1)。10有以下程序 main() int i; for(i=0; i3; i+) switch(i) case 1: printf(%d, i); case 2: printf(%d, i); default : printf(%d, i); 执行后输出结果是(A.011122)11下列程序的输出结果是()。main() int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; case 3:a+;b+;break; printf(a=%d,b=%dn,a,b);(A.a=2,b=1)12有以下程序,程序运行后的输出结果是 (D AbCdEf)#includeint main() char b,c; int i;b=a; c=A;for(i=0;i6;i+) if(i%2) putchar(i+b); else putchar(i+c); printf(n);return 0;13以下程序的输出结果是(A .28 70) main() int x, i; for(i = 1; i = 100; i+) x = i;if( +x % 2 = 0) if( +x % 3 = 0 ) if( +x % 7 = 0) printf(“%d “, x); printf(“n”);14有如下程序main() float x=2.0,y;if(x0.0)y=0.0;else if(x10.0)y=1.0/x;else y=1.0;printf(%fn,y);该程序的输出结果是(A. 0.500000)15有以下程序main() int i=1,j=1,k=2; if(j+|k+)&i+)printf(%d,%d,%dn,i,j,k);执行后输出结果是 (A 2,2,2)16.假定所有变量均已正确定义,下列程序段运行后x的值是()(D. 4)k1=1;k2=2;k3=3;x=15;if(!k1) x-;else if(k2) x=4; else x=3;17. 以下程序段的输出结果是(B. 1 -2)int x= 3;do pritnf(“%3d”, x-=2); while (!(-x);18. 有以下程序,若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是 (B. m=123n=456p=789)(中间无空格)#includeint main()int m,n,p;scanf(m=%dn=%dp=%d,&m,&n,&p);printf
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!