c语言学习知识复习资料参考材料题.doc
!-1、已知int a=6; 则执行a+=a-=a*a;语句后,a的值为A)36 B)0 C)-24 D)-60正确答案: D 2、下列表达式中,结果为5的是A)6*5%6 B)5*-2+15 C)5+75%10 D)6+-2/3正确答案: B 3、已知int a=1,b=-1;则语句printf("%dn",(a-,+b);的输出结果是A)-1 B)0 C)1 D)语句错误正确答案: B 4、已知x,y,z均为整型变量,且值均为1,则执行语句+x|+y&&+z;后,表达式x+y的值为A)1 B)2 C)3 D)4正确答案: C5、若int i,j;,则for(i=j=0;i<10&&j<8;i+,j+=3)控制的循环体执行的次数是A)9 B)8 C)3 D)2正确答案: C 6、数学上的不等式和C语言中的关系表达式意义不同。若x=5,y=6,z=7,则x<y<z在c语言中值为( ) 。A) 1 B) 0 C) 5 D)77、若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a>b?a:c<d?c:d的值 (B)。A)1 B)2 C)3 D)48、设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为 ( )。 A)0 B)1 C)2 D)39、已知char ch=C;则以下表达式的值是ch=(ch>=A && ch<=Z)?(ch+32):ch; A)A B)a C)Z D)c正确答案: D 10、以下选项中,当x为大于1的奇数时,值为0的表达式是:( d)A:x%2= =1 B:x/2 C:x%2!=0 D: x%2=011、为表示关系xyz,应使用C语言表达式(a) A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z) 12、设有定义:inta=2,b=3,c=4;,则以下选项中值为0的表达式是 (a) A)(!a=1)&&(!b=0) B)(!a|b) C)a&&b D)a|(b+b)&&(c-a)13、逗号表达式(a=3*5,a*4),a+15的值为( B )A)15 B)30 C)60 D)9014、设a=1,b=2,c=3,则(a>b)!=c的值为( B ) A) 0 B) 1 C) 2 D)315、设有int i; char c; float f; 则以下结果为整数的表达式是( D )A)i+f B)c+f C)i+c+f D)i*c 16、表示关系a<=b<=c的c语言表达式为 ( B)A) (a<=b)&(b<=c) B) (a<=b)&&(b<=c) C) (a<=b<=c) D) (a<=b)AND(b<=c) 17、有表达式:x=(y=4,z=16,k=32),式中x、y、z和k都是int型变量,则x=( c ) A) 4 B)16 C) 32 D)52 18、执行语句“x=(a=3,b=a- -)后x,a,b 的值依次为(C)A) 3,3,2 B) 3,2,2 C) 3,2,3 D) 2,3,219、若有说明和语句:int a=5; +a; 此处表达式+a的值是(C )。A)4 B) 5 C)6 D)720、表达式9!=8的值是(D)。A. true B. 非零值 C. 0 D.121、表示关系x<=y<=z的c语言表达式为AA (X<=Y)&&(Y<=Z) B. (X<=Y)AND(Y<=Z) C. (X<=Y<=Z) D. (X<=Y)&(Y<=Z)22、.若已定义x和y为double类型,则表达式:x=2,y=x+1/2的值是(C )。A. 1 B. 2 C. 2.0 D.2.523、C语言程序中,有以下语句int a5;int *p=a;则以下运算正确的是 A) 329%3.2 B)a+ C)p+ D)p=a+224、下列语句中,定义含有n个元素的一维指针数组的语句是() A) int pn B) int *p() C) int *pn; D) int (*p)n;1、以下程序的输出结果是( )。main( ) char str12="china";printf(“%dn”, strlen(str) );A) 12 B) 6 C) 5 D)112、如下程序的输出结果为:( )main( ) int x=1,a=0,b=0; switch ( x ) case 0: b+;case 1: a+; case 2: a+,b+; printf ( "a=%d,b=%d n ",a,b ); A)a=1 , b=1 B) a=2 , b=1 C) a=1 , b=0 D) a=2 , b=03、若int k=8;则执行下列程序后,变量k的正确结果是main()int k=8;switch(k)case 9:k+=1;case 10:k+=1;case 11:k+=1;break;default:k+=1;printf("%dn",k);A)12 B)11 C)10 D)9正确答案: D 4、阅读下列程序,则执行结果是#include "stdio.h"main()int a=0,b=0,c=0,i;for(i=0;i<4;i+)switch(i)case 0:a=i+;case 1:b=i+;case 2:c=i+;case 3:i+;printf("%d,%d,%d,%dn",a,b,c,i);A)0,1,3,4 B)1,2,3,4 C)0,1,2,5 D)0,2,3,4正确答案: C 5、下列程序的输出结果是#include "stdio.h"main() int i=6;while(i-)printf("%d",-i);printf("n");A)531 B)420 C)654321 D)死循环正确答案: B 6、下面程序的运行结果是#include "stdio.h"main()int j,i,k=0;for(j=50;j<=60;j+)if(!(k%10)printf("n");for(i=2;i<j;i+)if(!(j%i)break;if(i>=j-1)printf("%d",j);k+;A)5359 B)5953 C)3595 D)9535正确答案: A 7、阅读下面程序,则执行后的结果为#include "stdio.h"main()fun3(fun1(),fun2();fun1() int k=20;return k;fun2() int a=15;return a;fun3(int a,int b)int k;k=(a-b)*(a+b);printf("%dn",k);A)0 B)184 C)175 D)编译不通过正确答案: C 8、阅读下面程序,则执行后的输出结果为#include "stdio.h"fun(int a,int b)int s;s=a*b/2;printf("%dn",s);main()int a=10,b=16;fun(a,b);A)10 B)16 C)160 D)80正确答案: D 9、阅读下面程序,则程序执行后的结果为#include "stdio.h"main()int a=4,b=6,c=7;double d,fun(int,int,int);d=fun(a,b,c);printf("%lfn",d);double fun(int a,int b,int c)double s;s=a%b*c;return s;A)27 B)27.000000 C)28 D)28.000000正确答案: D 10阅读下列程序,则执行后输出的结果是#include "stdio.h"int k=1;main()fun(k);printf("%dn",k);fun(int k) k+;k=k*6;A)1 B)2 C)6 D)12正确答案: A 11、阅读下列程序,则执行后的输出结果为#include "stdio.h"fun(int x)if(x/2>0)fun(x/2);printf("%d",x%2);main() fun(20);putchar(n);A)11100 B)10100 C)10101 D)10110正确答案: B 12、以下程序的输出结果是( D )main( ) int a=2, b=3;float x=3.5, y=2.5 , z;z=(float)(a+b)/2+(int)x%(int)y;printf(“%.2fn”, z );A)2.00 B)2.50 C)3.00 D)3.5013、有如下程序段:int *p, a=10,b=1;p= &a; a= *p+b;执行该程序段后,a的值为:BA) 12 B) 11 C) 10 D) 编译出错14.下面程序的输出是(A )。main( ) int k=10; printf("k=%d,k=%o,k=%xn",k,k,k); A. k=10,k=12,k=a B.k=10,k=112,k=112 C. k=10,k=012,k=0xa D.k=10,k=11,k=11 1、改正下列程序中不正确的语句。(5分)s=s+1.0/nmain() int n ; float s=1.0; for(n=10;n>1;n- -) s=s+1/n;printf(“%6.1fn”,s);2、程序改错(每小题5分,共10分)main( ) long int k ;k=35555 ;printf ( “%d ”, k) ; 3、main( ) int sum , k ;sum=0 ;k= 1 ;while (k < =100 )sum = sum+k ;k + + ;printf (“ sum=%dn”, sum) ; 1、C语言中,在使用变量之前,必须先进行 定义 。2、二进制数101010001转换成八进制数是 (521)8 。3、C语言是结构化程序设计语言,主要包括 顺序结构 选择结构 循环结构 。4、#define N 10,则N的数据类型是 符号常量(或宏) ,它不能再进行赋值。5、若 float a=2.15,b;b=(int)a;则a= 2.15 ,b= 2 。6、x=7,y=1,执行x + = ( y + 3/2 ),x = 10 。7、C语言程序的基本语句中,常用的关于循环的语句是 while do while for if goto(其中任意三个) 。8、算术表达式 c+3 * 3.14 / 2 + 155的值是 double 型数据。9、printf (“abcrd ” );的输出结果是 dbc 。10、判断某一年year是否为闰年,须具备下面两条件之一,(1)能被4整除,但不能被100整除(2)能被400整除。写出判断闰年为真的逻辑表达式_ if(year%4&&year%100!=0|year%400=0) 。11、以下语句的功能是把两个整型变量的值进行交换,请填空 int a=18,b=5;int t;t=a ; a=b ; b=t;12、以下定义:int a10,char c5 则变量a和b的存储空间分别为 20 字节和 5 字节。13.C语言中的标识符只能由 字母 、 数字 和 下划线 组成 14.若a为整形变量,a=12则表达式a+=a-a*=a的值为 0 。15.在函数内定义变量时,省略存储类别,其默认存储类别是_自动_。16设 int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是 9 。17.若int a=98;则putchar(a)的输出结果是: b 。18.设x和y均为int型变量,且x=1,y=2,则以下表达式的值为1.0+x/y _1.0_19.若a=3,b=4,c=5则a+b>c&&b=c的值为 0 。20.在函数内定义变量时,省略存储类别,其默认存储类别是_整形_。21、已定义char ch=$; int i=1; j; 执行j=!ch && i+以后,表达式的值为: 0 i的值为: 1 22、执行以下程序时输入123456 <回车>,则输出结果是: 12,56 #include <stdio.h>main()int a=1,b;scanf(“%2d%*2d%2d”,&a,&b);printf(“%d,%d”,&a,&b);23、已知字母A的ASCII码为65。以下程序运行后的输出结果是: 67G 。 main()chara,b;a=A+5-3;b=a+6-2;printf("%d%cn",a,b); 24、定义int a=5,b=20;若执行语句printf("%dn",+a*-b/5%13);后,输出的结果为 【6】 。正确答案: 1.(9) 25、执行下面的程序后,a的值为 : 8 main() inta,b; for(a=1,b=1;a<=100;a+) if(b>=20)break; if(b%3=1)b+=3;continue; b-=5;26、下面程序是求出数组arr的两条对角线上元素之和,请填空。#include "stdio.h"main()int arr33=2,3,4,8,3,2,7,9,8,a=0,b=0,i,j;for(i=0;i<3;i+)for(j=0;j<3;j+)if( 【12】 )a=a+arrij;for(i=0;i<3;i+)for( 【13】 ;j>=0;j-)if( 【14】 )b=b+ arrij;printf("%d,%dn",a,b);正确答案: 1.(i=j ) 2.(j=2) 3.(i+j=2) 27、从键盘上输入10个数,求其平均值。 scanf(“%f”,&f) sum+=f (或者sum=sum+f)(10分) main() int i;float f, sum=0.0;for(i=1;i<11;i+) ; ; printf(“average=%fn”,sum/10);28.用do-while循环求 1到100的和。#include <stdio.h>main() int i,sum=0; i=1 ; do sum+=i; i+ ; while( i<=100 ); printf("%d",sum);29. 输出圆面积,面积大于100时停止。 #define PI 3.14159main() int r; float area; for( r=1 ; r<=10 ; r+ ) area=PI*r*r; if( area>100 ) break; printf("r=%d,area=%.2fn",r,area); 30.用数组求Fibonacci数列前20个数。#include <stdio.h>main() int i; int f20=1,1; for(i=2;i<20;i+) fi =fi-2 +fi-1; for(i=0; i<20 ;i+) if(i%5=0) printf("n"); printf("%12d",fi); 31、以下程序运行后的输出结果是: 1 。 main() inta=1,b=2,c=3; if(c=a)printf("%dn",c); elseprintf("%dn",b);32、阅读下面程序,则在执行时候的输出为 。#include "stdio.h"main()int x=1,y=2,z=0;if(x=2)z=x,x=y,y=z;printf("%d,%dn",x,y);正确答案: 1.(2,2) 33、语句printf("%dn",H-0+64);的执行结果为 【9】 。正确答案: 1.(88) 34、阅读下面程序,则程序的执行结果为 【10】 。#include "stdio.h"main() int a=10;fun(a);printf("%dn",a);fun(int x) x=50;正确答案: 1.(10) 35、写出下列程序的运行结果。 main() int n; For(n=3; n<=10; n+) if(n%5= =0) break; Printf(“%d”,n); 36、 main( ) int i=2,x=5,j=7; fun(j,6); printf(“i=%d;j=%d;x=%dn”,i,j,x);fun(int i,int j) int x=7; printf(“i=%d;j=%d;x=%dn”,i,j,x); 程序的运行结果为: i=7; j=6; x=7 i=2; j=7; x=5 37、程序如下。用代数式写出该程序执行的功能。1!+2!+3!+20!main() float n,s=0,t=1;for(n=1;n<=20;n+) t=t*n; s=s+t; printf("%en",s);38、试分析如下的程序的功能,用代数式写出本程序作的工作。1+2+3+20 main()int n,s=0; for(n=1;n<=20;n+) s+=n; printf("%dn",s);39、分析以下程序的输出结果,将输出结果最后一行写出来。(5分)9*1=9 9*2=189*8=72 9*9=81# include "stdio.h"main() int i,j,result; printf("n"); for (i=1;i<10;i+) for(j=1;j<10;j+) result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ printf("n");/*每一行后换行*/ 一:1、以下不合法的用户标识符是 ( ) A)s1_low B)Char C) case D) _3d 2、下面各选项中,均是C语言标识符的选项组是A)forchinato B)long_123short56_do C)voidunion_342 D)text.txt _023_3ew3、下列强制类型转换错误的是:( )。A)(double)a; B) (int)(x+y); C) (float)(5%3); D) int(x);3、作为结构化的语言,C语言程序应尽量采用模块的方式进行构造。C的基本单位是( )。 A)语句 B)数据 C)子程序 D)函数4、以下选项中,不能作为合法常量的是 ( )A)1.234e04 B)1.234e0.4 C)1.234e+4D)1.234e05、假定int类型变量占用两个字节,其有定义:int x8=0,2,4;,则数组x在内存中所占字节数是( )。 A) 16 B) 8 C) 6 D) 36、以下叙述不正确的是:( )A)在C程序中所有的变量必须先定义后使用。B)在程序中,APH和aph是两个不同的变量。C)若a和b类型相同,在执行了赋值语句a=b后,b中的值将放入a中,b中的值不变。D)当输入数值时,对于整型变量只能输入整型值,对于实型变量只能输入实型值。7、有定义语句:int b;char c10; ,则正确的输入语句是 B A)scanf("%d%s",&b,&c); B)scanf("%d%s",&b,c); C)scanf("%d%s",b,c);D)scanf("%d%s",b,&c);8、以下对一维数组c进行正确的定义初始化的语句是A)int c10=0; B)int c10=0*10; C)int c1=0,0,0,0,0,0,0; D)int c10=0;正确答案: D 9、以下二维数组c的定义形式是A)int c3 B)float c3,4 C)double c34 D)float c(3)(4)正确答案: C 10、已知:int c34;则对数组元素引用正确的是A)c14 B)c1.50 C)c1+00 D)以上表达都错误正确答案: C 11、若有以下语句,则正确的描述是char a="toyou"char b=t,o,y,o,u;A)a数组和b数组的长度相同B)a数组长度小于b数组长度C)a数组长度大于b数组长度D)a数组等价于b数组正确答案: C 12、已知:char a15,b15="I love china"则在程序中能将字符串I love china赋给数组a的正确语句是 A)a="I love china" B)strcpy(b,a); C)a=b; D)strcpy(a,b);正确答案: D 13、SA有以下程序,其中%u表示按无符号整数输出Main()unsigned x=0xFFFF;Printf(“%un”,x);程序输出结果是: ( b)A:-1 B :65535 C:32767 D:0xFFFF14、以下不合法的的字符常量是:( b)A:x13 B:081 C:65 D:n15、可在C程序中用作用户标识符的一组标识符是:(a)A:and _2007 B: Data y-m-d C:Hi Dr.Tom D:case Big116、C语言中,运乍对象必须是整型数的运算符是(a)A)% B)/ C)%和 / D)* 17、二进制数01100100换成十六进制数是(a)A) 64 B) 63 C) 100 D) 14418、有以下程序 (a) #include main() charc1=1,c2=2; c1=getchar();c2=getchar();putchar(c1);putchar(c2); 当运行时输入:a<回车>后,以下叙述正确的是 A)变量c1被赋予字符a,c2被赋予回车符 B)程序将等待用户输入第2个字符 C)变量c1被赋予字符a,c2中仍是原有字符2 D)变量c1被赋予字符a,c2中将无确定值19、以下叙述正确的是:( C ) A)数组的大小是固定的,但可以有不同的类型的数组元素B)数组的大小是可变的,但所有数组元素的类型必须相同C)数组的大小是固定的,所有数组元素的类型必须相同D)数组的大小是可变的,可以有不同的类型的数组元素20、以下给字符数组str定义和赋值正确的是( c )A)char str10; B)char str10;str=“china”; strcopy(str,”abcdefghijklm”);C)char str=“china”; D)char str10=“abcdefghijklm”;21、在执行int a3=1,2,3,4,5,6;语句后,a10的值是( A )A)4 B)1 C)2 D)522、C语言程序中,有以下语句int a5;int *p=a;则以下运算正确的是 DA) 329%3.2 B)a+ C)p+ D)p=a+223、以下程序的输出结果是( B )main( ) char s12="string";printf(“%dn”, strlen(s) );A) 7 B) 6 C) 12 D) 1324、以下叙述中正确的是: ( A )A)使用putchar函数时,必须在之前包含头文件stdio.h B)调用printf函数时,必须要有输出表列C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码25、C语言中while和do-while循环的主要区别是( A )A)do-while的循环至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件严格C)do-while的循环体不能是复合语句D)do-while允许从外部转到循环内 26、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是(D )for (i=5;i>=0;i-) for(j=0;j<5;j+) A.20 B.25 C.24 D.3027、若要定义a为3*4的二维数组,正确的定义语句是(B)。 A float a(3,4); B float a34; C float a(3)(4); D float a3,4;28、 设有定义:char s12="string"则printf("%dn,strlen(s);输出是(B ) A. 7 B. 6 C. 12 D.1329、下列赋值正确的是: A char c;A :c=a; B : c="a" C : c="CHINA" D : c=CHINA;30、下列强制类型转换错误的是:DA (double)a; B (int)(x+y) C (float)(5%3); D int(x);31、在printf函数中用来输出十六进制无符号整数的格式字符是(C )A.d格式符 B.x格式符 C.u格式符 D.o格式符32、C语言提供的合法的数据类型关键字是(C )。A. Double B. SHORT C. int D.Char33、在C语言中,合法的字符型常数是(A )。A. 0 B. A C. 65 D.a二:1、已知int a=6; 则执行a+=a-=a*a;语句后,a的值为A)36 B)0 C)-24 D)-60正确答案: D 2、下列表达式中,结果为5的是A)6*5%6 B)5*-2+15 C)5+75%10 D)6+-2/3正确答案: B 3、已知int a=1,b=-1;则语句printf("%dn",(a-,+b);的输出结果是A)-1 B)0 C)1 D)语句错误正确答案: B 4、已知x,y,z均为整型变量,且值均为1,则执行语句+x|+y&&+z;后,表达式x+y的值为A)1 B)2 C)3 D)4正确答案: C5、若int i,j;,则for(i=j=0;i<10&&j<8;i+,j+=3)控制的循环体执行的次数是A)9 B)8 C)3 D)2正确答案: C 6、数学上的不等式和C语言中的关系表达式意义不同。若x=5,y=6,z=7,则x<y<z在c语言中值为( ) 。A) 1 B) 0 C) 5 D)77、若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a>b?a:c<d?c:d的值 (B)。A)1 B)2 C)3 D)48、设a、b、C、d、m、n均为int型