百科园C语言试题库_第1页
百科园C语言试题库_第2页
百科园C语言试题库_第3页
百科园C语言试题库_第4页
百科园C语言试题库_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、. 第一章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程序

2、中注释局部可以单独占一行9. 以下表达正确的选项是( )D.c语言函数可以嵌套调用,如fun(fun(*)10. 一个C程序的执行是从( ) D.本程序main函数开场,到main函数完毕11. 以下表达不正确的选项是( )A在c程序中,注释说明只能位于一条语句后面第二章单项选择1以下选项中非法的字符常量是( )(B /0192设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为(C double)3判断字符型变量c1是否为数字字符的正确表达式为( )(A (C1=0)&(C1k2&(k2=k2k1)后,k1和k2的值分别为(B 0和20)5下面四个选项中,均是不合法

3、的用户标识符的选项是。(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(*)函数定义如下: f(*)=请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的构造。试题程序: */#include

4、 #include #include /*ERROR*/f(double *) if(*=0.0|*=2.0) return 0.0; else if(*0.0) return(*-1)/(*-2); else return(*+1)/(*-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 *)return s;2./*以下给定程序中,函数fun的功

5、能是:求三个数的最小公倍数。例如,给变量*1、*2、*3分别输入15、11、2,则输出结果应当是330。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的构造。试题程序: */#include int fun(int *,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%*;m=j%y;n=j%z; return j;void main() int *1,*2,*3,j; printf(Input *1 *

6、2 *3: );scanf(%d%d%d,&*1,&*2,&*3); printf(*1=%d,*2=%d,*3=%d n,*1,*2,*3);j=fun(*1,*2,*3); printf(The minimal mon multiple is: %dn,j);参考答案 j=0;while (t!=0 | m!=0 | n!=0)3/*以下程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,假设输入252,则输出应该是20。假设输入202,则输出应该是0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的构造。试题程序:*/#

7、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函数,不

8、得增行或删行,也不得更改程序的构造。试题程序: */#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,则函数的

9、值为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函数,不得增行或删行,也不得更改程序的构造。试题程序:*/#i

10、nclude #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。请改正

11、程序中的错误,使程序能输出正确的结果。注意:不要改动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/*以下给

12、定程序中,函数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

13、: );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

14、,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(%5

15、d,);参考答案g=s&s=bg+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/*函数fu

16、n的功能是:从三个形参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);

17、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*/ret

18、urn 3.14159*1 /2.0;void main()double *;printf(Enter *: );/*FILL*/ scanf(%lf, 2 );/*FILL*/ printf(s=%lfn,fun( 3 );参考答案 return 3.14159*r*r/2.0;scanf(%lf,&*);printf(s=%lfn,fun(*);6例如,在主函数中从键盘给n输入30后,输出为:s=1.226323。注意:局部源程序给出如下。请勿改动main函数和其他函数中的任何容,仅在函数fun的横线上填入所编写的假设干表达式或语句。试题程序: */#include double fun(

19、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从键盘输入

20、)。例如,当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;l

21、d8/*请补充函数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

22、,&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的花括号中填入所编写的假设干语句。

23、试题程序: */#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)

24、; /*/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,

25、&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但不大

26、于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,fu

27、n(n); fscanf(in,%dn,&n); fprintf(out,%fn,fun(n); fclose(in); fclose(out); /*/4/*编写函数fun,它的功能是:计算和输出以下级数的和。S=1/(1*2)+1/(2*3)+.1/(n*(n+1) ,例如,当n=10时,函数值为0.909091。注意:局部源程序给出如下。请勿改动main函数和其他函数中的任何容,仅在函数fun的花括号中填入所编写的假设干语句。试题程序: */#include#includedouble fun(int n) /*Begin*/*End*/void main() FILE *wf,*in;

28、 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的花括号中填入所编写的假设干语句。试题程序:

29、*/#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/*请编写一个函数 unsign

30、ed 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 *; printf(Enter a unsigned integer n

31、umber: ); scanf (%u,&*); printf(The original data is:%un,*); if(*3)的最小数,结果由函数返回。其中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

32、,*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。注意:局部源程序给出如下。请勿改动mai

33、n函数和其他函数中的任何容,仅在函数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); fclos

34、e(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*/*En

35、d*/void main() double *; FILE *wf,*in; printf(Input eps: ); scanf(%lf,&*); printf(neps=%lf,PI=%lfn,*,fun(*);/*/ in=fopen(in37.dat,r); wf=fopen(out37.dat,w); fscanf(in,%lf,&*); fprintf (wf,%lfn,fun(*); fclose(in); fclose(wf);/*/10/*请编写函数fun,它的功能是计算以下级数和,和值由函数值返回。S=1+*+*2/2!+*3/3!+*n/n! 例如,当n=10,*=0.3

36、时,函数值为1.349859。注意:局部源程序给出如下。请勿改动main函数和其他函数中的任何容,仅在函数fun的花括号中填入所编写的假设干语句。试题程序: */#include#includedouble fun(double *, int n)/*Begin*/*End*/void main() FILE *wf,*in; double *; int n; printf(%f ,fun(0.3,10);/*/ in=fopen(in38.dat,r); wf=fopen(out38.dat,w); fscanf(in,%lf %dn,&*,&n); fprintf(wf,%fn,fun(*

37、,n); fclose(in); fclose(wf);/*/第四章单项选择1下面的程序片断所表示的数学函数关系是Ay = -1; if(* != 0) y = 1; if(* 0) y = 1;else y = 0;2以下程序的执行结果是main() (C.1) int * = 0, s = 0; while( !* != 0 ) s += +*; 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

38、(%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(*=0,y=0;(y=123)&(*4);*+);(A.4次)7以下程序的输出结果是(A.a=2,b=1)main() int *=1,y=0,a=0,b=0; switch

39、(*) 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); defau

40、lt : printf(%d, i); 执行后输出结果是(A.011122)11以下程序的输出结果是。main() int *=1,y=0,a=0,b=0; switch(*) 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+

41、) if(i%2) putchar(i+b); else putchar(i+c); printf(n);return 0;13以下程序的输出结果是(A .28 70) main() int *, i; for(i = 1; i = 100; i+) * = i;if( +* % 2 = 0) if( +* % 3 = 0 ) if( +* % 7 = 0) printf(“%d “, *); printf(“n);14有如下程序main float *=2.0,y;if*0.0y=0.0;else if*10.0y=1.0/*;else y=1.0;printf%fn,y;该程序的输出结果是

42、(A. 0.500000)15有以下程序mainint i=1,j=1,k=2; ifj+|k+&i+printf%d,%d,%dn,i,j,k;执行后输出结果是(A 2,2,2)16.假定所有变量均已正确定义,以下程序段运行后*的值是(D. 4)k1=1;k2=2;k3=3;*=15;if(!k1) *-;else if(k2) *=4;else *=3;17.以下程序段的输出结果是(B. 1 -2)int *= 3;do pritnf(“%3d, *-=2); while (!(-*);18. 有以下程序,假设想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,

43、则正确的输入是(B. m=123n=456p=789)(中间无空格)#includeint main()int m,n,p;scanf(m=%dn=%dp=%d,&m,&n,&p);printf(%d%d%dn,m,n,p);return 0;19以下程序中,while循环的循环次数是( ) A 死循环不能确定次数main() int i=0; while(i10) if(ib) c=a;a=b;b=c;)21为了防止在嵌套的条件语句 if-else 中产生二义性,C语言规定:else子句总是与配对。B 其之前最近的if22以下表达正确的选项是:c(用do-while构成循环时,只有在whil

44、e后的表达式为零时完毕循环)23有如下程序mainint *=1,a=0,b=0;switch*case 0: b+;case 1: a+;case 2: a+;b+;printfa=%d,b=%dn,a,b;B a=2,b=124运行以下程序后,输出的结果是main() int k = -3; if(k c)b=a;a=c;c=b;则c的值为。(B 2)26在C语言中,为了完毕由while语句构成的循环,while后一对圆括号中表达式的值应该为。(B 0)27设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是C !(ab)&!c|1)28假定所有变量均已

45、正确定义,下面语句段执行后的*的值是a = b = c = 0; * = 35;(B 4)29语句while(!E);中的条件为真等价于。(B E=0)30假设*是int类型变量,以下程序段的输出结果是for(* = 3; * 6; *+) printf( (*%2)“(*%d):(#%dn),*);(D *3#4 *5)31有以下程序段int n=0,p;do scanf(%d,&p); n+;while(p!=12345&n1;i-) for(j=1;ji;j+) putchar(#);(D p的值等于12345或n的值大于等于3)A #33以下程序段中,能够正确地执行循环体的是。B in

46、t s=6;do s-=2;while(s);34执行语句 for(i=1;i+bc)a=b; else a=c; 则a的值为。(C 1)37以下描述中正确的选项是。(D 在do-while循环体中,一定要有能使while后表达式的值变为零“假的操作)38选择构造中的条件与循环构造中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为真或假。哪个数作为逻辑假值。D 039以下程序的输出结果是main() int i, sum=0; for(i = 1; i 6; i+) sum += i; printf(%dn sum);A 15第四章一选择题1.有以下程序,程序运行后的输出结果是(

47、)B.6#includeint fun (int *,int y) if (*!=y) return (*+y)/2);else return (*);int main() int a=4,b=5,c=6;printf(%dn,fun(2*a,fun(b,c);return 0;2. 有以下程序,程序运行的输出结果( ) A.8#include int f(int *);int main() int n=1,m; m=f(f(f(n); printf(“%dn,m); return 0 ;int f(int *) return *2;3. 有以下程序,程序执行后变量w中的值是( )#inclu

48、deint funl(double a)return a*=a;int fun2(double *,double y) double a=0,b=0; a=funl(*);b=funl(y);return (int)(a+b);int main()double w;w=fun2(1.1,2.0);4. 有以下程序,程序运行后的输出结果是B.64#includeint fun() static int *=1;*=2;return *;int main()int i,s=1;for(i=1;i=3;i+) s*=fun();printf(%dn,s);5. 有以下程序,程序运行后的输出结果是D.

49、9#includeint f(int *,int y)return (y-*)*);int main()int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c);printf(%dn,d);6. 有以下程序,程序运行后的输出结果是B.21#include void fun(int p)int d=2;p=d+; printf(“%d,p);int main()int a=1;fun(a); printf(“%dn,a); return 0;7. 有以下程序:程序运行后的输出结果是( )A.21#include int f()static int *=1;*+=1;return *

50、;int main() int i,s=1;for(i=1;i=5;i+) s+=fun();printf(%dn,s);return 0;8. 假设有代数式 (其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是A.sqrt(fabs(pow(n,*)+e*p(*)9. 以下关于return语句表达中正确的选项是D.一个自定义函数中可以根据不同情况设置多条return语句10. 设有如下函数定义,假设执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( ) B.3int fun(int k) if (k1) return 0;else if(k=1

51、) return 1;else return fun(k-1)+1;11. 在一个C语言源程序文件中所定义的全局变量,其作用域为C.由具体定义位置和e*tern说明来决定围12. 以下表达正确的选项是A.C语言函数可以嵌套调用,例如:fun(fun(*)13. 以下程序的主函数中调用了在其前面定义的fun函数,则以下选项中错误的fun函数首部是 ( ) B.double fun (double a)14. 以下说法不正确的选项是C.用户可以重新定义标准库函数15. 以下表达中正确的选项是A.C语言规定必须用main作为主函数名,程序将从此函数开场执行,到此函数完毕16. 假设函数调用时的实参为

52、变量时,以下关于函数形参和实参的表达中正确的选项是D形参只是形式上的存在,在调用之前不占用具体存储单元17. 在C语言中,只有在使用时才占用存单元的变量,其存储类型是。Bauto和register18. 设函数中有整形变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是D.static19. 以下正确的函数定义形式是:A.double fun(int *;in y)20. 在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则C.称为函数的间接递归调用二程序设计/*请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入*所指数组中,非素数

53、的个数通过k传回。例如,输入17,则应输出4 6 8 9 10 12 14 15 16。注意:局部源程序给出如下。请勿改动main函数和其他函数中的任何容,仅在函数fun的花括号中填入所编写的假设干语句。试题程序: */#include#include#includeint fun(int m, int *) /*Begin*/ /* End */int main() FILE *wf,*in; int m, n,k, zz100; printf(nPlease enter an integer number between 10 and 100: ); scanf(%d,&n); m=fun

54、(n,zz); printf(nnThere are %d non-prime numbers less than %d: ,m,n); for(n=0;nm;n+) printf(%4dn,zzn); in=fopen(in01.dat,r); wf=fopen(out01.dat,w); fscanf(in,%d,&k); m=fun(k,zz); for(n=0;nm;n+) fprintf(wf,%dn,zzn); fclose(in);fclose(wf); return 0;【参考代码】 int i,k,j=0;for(i=2;im;i+)for(k=2;ki;k+)if(i%k=

55、0) break;if(ki) *j+=i;return j;三程序改错1./*以下给定程序中,函数fun的功能是:将十进制正整数m转换成进制数,并按位输出。例如,假设输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的构造。试题程序:*/#include #include /*ERROR*/void fun(int m,int k); int aa20, i; for(i=0;m;i+) /*ERROR*/aai=m/k;m/=k; for(;i;i-)/*ERRO

56、R*/printf(%d,aai);int main() int b,n; printf(nPlease enter a number and a base:n); scanf(%d%d,&n,&b); fun(n,b); printf(n ); return 0;【参考答案】void fun(int m, int k)【参考答案】aai=m%k;【参考答案】printf(%d, aai-1);2./*数列中,第一项为3,后一项都比前一项的值增5。以下给定程序中,函数fun的功能是:计算前项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主

57、函数里。如当n的值为20时,该数列为3,8,13,18,23,28,93,98。符合此条件的累加值应为42,126,366,570,1010。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的构造。试题程序: */#include #define N 20int fun(int n, int a)/*ERROR*/ int i,j,k,sum; sum=0; for(k=3,i=0;in;i+,k+=5) sum=sum+k;/*ERROR*/ if(sum%4=2) aj+=sum; /*ERROR*/ return j-1;int mai

58、n()int aN,d,n,i;printf(nEnter n(4=n=50): );scanf(%d,&n); d=fun(n,a); printf(nnThe result :n ); for(i=0;id;i+) printf(%6d ,ai);printf(nn );return 0;【参考答案】int i,j=0,k,sum;【参考答案】if(sum%4=2)【参考答案】return j+;return j;3. /*以下给定程序中,函数fun的功能是:计算函数F(*,y,z)=(*+y)/(*-y)+(z+y)/(z-y)的值。其中*和y不相等,z和y不等。例如,当*的值为9,y的

59、值为11,z的值为15时,函数值为-3.50。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的构造。试题程序:*/#include #include #include /*ERROR*/#define FU(m,n) (m/n)float fun(float a,float b,float c) float value; value=FU(a+b,a-b)+FU(c+b,c-b);/*ERROR*/ return(Value);void main() float *,y,z,sum; printf(Input * y z: ); scanf

60、(%f%f%f,&*,&y,&z); printf(*=%f,y=%f,z=%fn ,*,y,z); if(*=y|y=z) printf(Data error! n );e*it(0); sum=fun(*,y,z); printf(The result is:%5.2fn ,sum);【参考答案】#define FU(m,n) (m)/(n)#define FU(m,n) (m)/(n)【参考答案】return(value);return value;4. /*以下给定程序中,函数fun的功能是:按如下递归公式求函数值。例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。请改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论