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(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)else if(xint fun(int x,int y,int z) int j,t,n,m;/
3、*ERROR*/j=1;t=m=n=1;/*ERROR*/while (t!=0 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“,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的功能是:计算正整数
4、num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/#include #include long fun(long num)/*ERROR*/long k;dok *=num%10;/*ERROR*/num =10;while(num);return(k);void main()int n;printf(“Please enter a number: “);scanf(“%ld“,printf(“n%ldn“,fun(n);参考
5、答案 long k=1; num/=10;4/*下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值: t=1-/(2)/(3).1/()m请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: */#include #include double fun(int m)double y=1.0;int i;/*ERROR*/for(i=2;i#include int fun(int k) int m=0,mc=0, j;while(k=2)int i;for(i=2;i#include doubl
6、e fun(int n) double result =1.0;/*ERROR*/if n=0return 1.0;while(n1while (k#includeint main ( ) double s=0.0,eps,t=1.0;int n ;scanf (“%lf“,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函数,该函数的功能是:打印出满足个位的数字、十位上的数字和百位上的数字都相等的所有三位数。本题的
7、结果为: 111 222 333 444 555 666 777 888 999。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。试题程序:*/#include #include void main()int g, s, b;for(g=1; g#include void main()int i,g;for(i=1;iint fun(int a,int b,int c) int t;/*FILL*/t=(ab)?(bc?b:(ac?c:【1】)/*FILL*/:(ac)?【2】/*FILL*/:(bc)?c:【3】);
8、 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/*给定程序的功能是:求二分之一圆面积, 函数通过形参得到圆的半径, 函数返回二分之一的圆面积(注: 圆面积公式为 :Sr2,在程序中定义的变量名要与公式的变量相同 )。 例如,输入圆的半径值:19.527,输出为:s=598.949991。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中
9、的任何内容 ,仅在横线上填入所编写的若干表达式或语句。试题程序: */#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“, printf(“s=%lfn“,fun(x);6例如,在主函数中从键盘给n输入30后,输出为:s=1.226323。注意:部分源程
10、序给出如下。请勿改动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“,s=fun(n);printf(“nns=%fn“,s);参考答案 for(i=1;i#include void
11、 main()int n,m;long sum;/*FILL*/1 ;printf(“nInput n,mn“);scanf(“%d,%d“,while(n#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“,if (fun(year)printf(“%d is a leap year. n“,year);elseprint
12、f(“%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 ma
13、in()int n;double s;FILE *out,*in;printf(“nInput n:“);scanf(“%d“,s=fun(n);printf(“nns=%fn“,s);/*/in=fopen(“in34.dat“,“r“);out=fopen(“out34.dat“,“w“);fscanf(in,“%dn“,fprintf(out,“%fn“,fun(n);fscanf(in,“%dn“,fprintf(out,“%fn“,fun(n);fclose(out);/*/2/*请编写函数fun,该函数的功能是:计算并输出 S=1+(1+20.5)+(1+20.5+30.5)+(1
14、+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“,s=fun(n);printf(“nns=%fnn“,s);/*/in=fopen(“in32.dat“,“r“);w
15、f=fopen(“out32.dat“,“w“);fscanf(in,“%dn“,fprintf(wf,“%fn“,fun(20);fscanf(in,“%dn“,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的花括号中填入所编写的若干语句。试题
16、程序: */#include double fun(int n)/*Begin*/*End*/void main()int n; double s;FILE *out,*in;printf(“nInput n: “); scanf(“%d“,s=fun(n);printf(“s=%fn“,s);/*/in=fopen(“in31.dat“,“r“);out=fopen(“out31.dat“,“w“);fscanf(in,“%dn“,fprintf(out,“%fn“,fun(n);fscanf(in,“%dn“,fprintf(out,“%fn“,fun(n);fclose(in);fclo
17、se(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(“
18、in40.dat“,“r“);fscanf(in,“%dn“,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()i
19、nt n;double sum;FILE *out,*in;printf(“Input N=“);scanf(“%d“,sum=fun(n);printf(“nnsum=%fnn“,sum);/*/in=fopen(“in36.dat“,“r“);out=fopen(“out36.dat“,“w“);fscanf(in,“%dn“,fprintf(out,“%fn“,fun(n);fclose(in);fclose(out);/*/6/*请编写一个函数 unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n=2)位的整数,则函数求出w的后n-1位的数作为函
20、数值返回。 例如,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“,printf(“The original data is:%un“,x);if(x3)的最
21、小数,结果由函数返回。其中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“);o
22、ut=fopen(“out39.dat“,“w“);while(!feof(in)fscanf(in,“%dn“,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
23、)/*Begin*/*End*/void main()FILE *wf,*in;int n; double s;printf(“nInput n: “); scanf(“%d“,s=fun(n);printf(“ns=%fn “,s);/*/in=fopen(“in42.dat“,“r“);wf=fopen(“out42.dat“,“w“);fscanf(in,“%dn“,fprintf(wf,“%fn“,fun(10);fclose(in);fclose(wf);/*/9/*请编写一个函数fun,它的功能是:根据以下公式求 的值(要求满足精度0.005,即某项小于0.005时停止迭代)。 /
24、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“,
25、printf(“neps=%lf,PI=%lfn“,x,fun(x);/*/in=fopen(“in37.dat“,“r“);wf=fopen(“out37.dat“,“w“);fscanf(in,“%lf“,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的花括号中填入所编写的若干语
26、句。试题程序: */#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“,fprintf(wf,“%fn“,fun(x,n);fclose(in);fclose(wf);/*/第四章单项选择1下面的程序片断所表示的数学函数关系是(A)y = -1; if(x
27、!= 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 b)a=
28、b; if(ac)a=c; 则 a 的值为(A.1)。10有以下程序main() int i;for(i=0; iint main() char b,c; int i;b=a; c=A;for(i=0;iint main()int m,n,p;scanf(“m=%dn=%dp=%d“,printf(“%d%d%dn“,m,n,p);return 0;19 以下程序中,while 循环的循环次数是( ) (A 死循环不能确定次数)main()int i=0;while(ib) c=a;a=b;b=c;)21为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定:else子句总是与()
29、配对。(B 其之前最近的if)22以下叙述正确的是:(c)(用 do-while 构成循环时,只有在 while 后的表达式为零时结束循环)23有如下程序main() int x=1,a=0,b=0;switch(x)case 0: b+;case 1: a+;case 2: a+;b+;printf(“a=%d,b=%dn“,a,b);(B a=2,b=1)24运行以下程序后,输出的结果是main() int k = -3;if(k c)b=a;a=c;c=b;则c的值为()。(B 2)26在C语言中,为了结束由while语句构成的循环,while后一对圆括号中表达式的值应该为()。(B 0
30、)27 设 a、b 和 c 都是 int 变量,且 a=3,b=4 ,c=5;则以下的表达式中,值为 0 的表达式是C !(a1;i-) for(j=1;jbc)a=b; else a=c; 则a的值为()。(C 1)37以下描述中正确的是()。(D 在do-while循环体中,一定要有能使while后表达式的值变为零(“假” )的操作)38选择结构中的条件与循环结构中循环成立的条件, 在写法上可以是任一表达式,但其值只能被判断为“真“或“假“。 哪个数作为逻辑“假“值()。(D 0)39以下程序的输出结果是main() int i, sum=0;for(i = 1; i int fun (i
31、nt x,int y) if (x!=y) return (x+y)/2);else return (x);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 x);int main() int n=1,m;m=f(f(f(n); printf(“%dn”,m);return 0 ;int f(int x) return x*2;3. 有以下程序,程序执行后变量w中的值是( ) C.5.0#includeint funl(dou
32、ble a)return a*=a;int fun2(double x,double y) double a=0,b=0;a=funl(x);b=funl(y);return (int)(a+b);int main()double w;w=fun2(1.1,2.0);4. 有以下程序,程序运行后的输出结果是( )B.64#includeint fun() static int x=1;x*=2;return x;int main() int i,s=1;for(i=1;iint f(int x,int y)return (y-x)*x);int main() int a=3,b=4,c=5,d
33、;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 x=1;x+=1; return x;int main() int i,s=1;for(i=1;i#include#includeint fun(int m, int xx)/*Begin*/* End */int main()FILE *wf,*in;int m, n,k, zz100;printf(“nPlease enter an integer number between 10 and 100: “);scanf(“%d“,m=fun(n,zz);printf(“nnThere are %d non-prime numbers less than %d: “,m,n);for(n=0;n#include