当前位置:文档之家› C语言复习题及答案

C语言复习题及答案

一.单项选择题1.下列选项中,不是转义字符集中的符号是( C )。

A \\B \’C 074D \02. 下列给出的符号串中,不属于C语言保留字的是( B )。

A switchB cherC caseD else3. 下列给出的符号串中,不能作为C语言标识符的是( C )。

A a_2B _2aC a.3D a_34. 下列属于C语言字符常量的是( C )。

A ‘abc’B “\n”C ‘a’D ‘a\0’5. 字符串”ABC”再内存占用的字节数为( B )。

A 3B 4C 6D 86. 设有宏定义“#define R 2+3”,则R*R的宏替换结果正确的是( B )。

A (2+3)*(2+3)B 2+3*2+3C 5*5D 5.0*5.07. 设整形变量I的值为3,则表达式i---i的值为( A )。

A 0B 1C 2D 38. 表达式“10!=9”的值为( D )。

A trueB 非零值C 0D 19. 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值为( D )。

A 3B 0C 9D -1210. 下列选项中,正确的赋值表达式为( C )。

A a=7+b+c=a+7B a=7+b++=a+7C a=(7+b,b++,a+7)D a=7+b,c=a+711. 若有以下定义语句:char a;float c; double d; 则表达式a*b+d-c值的类型为( D )。

A floatB intC charD double12. 用十进制数表示表达式“12||012”的运算结果是( A )。

A 1B 0C 14D 1213. 下列一组运算符中,优先级别最高的运算符是( C )。

A <=B =C %D &&14. 设定“ char a=3,b=6,c;”,计算表达式c=(a^b)<<2后c的二进制值是( D )。

A 00011100B 00000111C 00000001D 0001010015. 设x,y,z,t 均为int类型,则执行下列语句串后,变量t的值为(C )。

X=y=z=0;If(x=y) t=z;Else t=!z;A 不定值B 2C 1D 016. 设整形变量m1值为3,m2值为2,m3值为1,执行下列语句后,整形变量m4值为( D )。

Switch(m1=m2==m3+1){ case1:m4=1;break;case2:m4=3;break;case3:m4=2;break;default:m4=4;}A 1B 2C 3D 417. 设有数据定义语句“int a[200];”,下列数组元素引用中下标不越界的是( A )。

A a[-1]B a[0]C a[201]D a[200]18. 若有以下数据定义语句,则数值为4的表达式是( A )。

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};A a[‘g’-‘c’]B a[4]C a[‘d’-‘c’]D a[‘d’-c]19. 语句”printf(“%d\n”,strlen(“ats\n012\1\\”));”的输出结果是( C )。

A 11B 10C 9D 820. char x[]={“abcdefg”};char y[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};则正确的叙述为( C )。

A 数组x和数组y等价B 数组x和数组y的长度相同C 数组x的长度大于数组y的长度D 数组x的长度小于数组y的长度21.下列不正确的转义字符是(C )A. ′\\′B. ′\″C. ′\086′D. ′\0′22.下列运算符中,优先级最高的是(A )A.[]B.++C.%D.&&23.下列标识符中,不是C语言保留字的是(C )A. charB. whileC. minD. default24.下列数据中,不是C语言常量的是( C)A. ′\n′B. ″a″C. e-2D. 01225.若定义了int a;char b;float c;,则表达式a*b-c的类型是( D)A. floatB. intC. charD. double26.若定义了int a,x,y;,则下列语句中不正确的是( D)A. x=3,y=5;B. ++x;C. x=y+=x*30;D. a=y+x=30;27.设有如下的变量定义:int i = 8 , k , a , b ; unsigned long w = 5 ; double x = 1.42 , y=5.2;则以下符合C语言语法的表达式是〔 A 〕A.a+=a-=(b=4)*(a=3) B.x%(-3)C.a=a*3=2 D.y=float( i )28.经int a=7; float x=2.5,y=4.7; 说明后,表达式x+a%3*(int)(x+y)%2/4的值是〔A 〕A.2.500000 B.2.750000C.3.500000 D.0.00000029.设有单精度量f,其值为13.8,执行语句n = ( int ) f % 3 ; 后,整型变量的值是〔 A 〕A.1 B.4 C.4.333333 D.4.630. 设int c=5 , a ; a=2+(c+=c++, c+8 , ++c ) ; 则a = 〔 B 〕A.15 B.14 C.13 D.1631.已知字母‘A’的十进制ASCII代码值为65,下面程序段的输出是〔 A 〕Char ch1,ch2; ch1=‟A‟+‟5‟-…3‟; ch2=‟A‟+‟6‟-…3‟; printf(“%d,%c\n”,ch1,ch2);A.67,D B.B,C C.不确定的值D.C32.设a , b , c为整型数,且a=2,b=3,c=4,则执行完以下语句a*=16+(b++)-(++c)后,a的值是〔 A 〕A.28 B.30 C.32 D.2633. 以下语句:int a = 110 , b = 017; printf ( “ %x , %d \n ” , a++ , ++b ) ; 输出结果是〔 A 〕A.6e , 15 B.6e , 16 C.6f , 15 D.6f , 1634. 以下程序段int x=10 , y=10 ; printf ( “ %d %d\n ” , x――, ――y ) ;的输出结果是〔 D 〕A.10 10 B.9 9 C.0 10 D.10 935.int x=13, y=5 ; printf(“%d\n”,x%=y/=2); 运行结果为〔 B 〕A.0 B.1 C.2 D.336.已有如下定义和输入语句,若要求a1, a2 , c1 , c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是〔AC 〕int a1 , a2 ; char c1 , c2 ;scanf( “ %d %c %d %c ” , &a1 , &c1 , &a2 , &c2 ) ; /* <CR>表示回车*/A.10A 20B <CR> B.10 A 20 B <CR>C.10A20B <CR> D.10A20 B <CR>37.若定义了int b[][3]={1 ,2,3,4,5,6,7};,则b数组第一维的长度是(B )A. 2B. 3C. 4D.无确定值38.若定义了x=100;,则表达式x++>100?x+20:x+10的值是(A )A.110B.111C.120D.12139.执行printf(″%d\n″,strlen(″t\″066\xee\n″));语句的输出结果是(A )A.7B.12C.13D.输出项不合法,无正常输出40.若定义了int m,n=0,*p1=&m;,则下列与m=n;等价的正确语句是( D)A. m=*p1;B. *p1=&*n;C. *&p1=&*n;D. *p1=*&n;41.可以用作C程序标识符的一组是(A)A.printB.i\amoodb one-halfaBc 3paiC.PxqD.Cppline# powHis.age while42.以下叙述正确的是( C )A.宏名必须用大写的英文字母表示B.宏定义不仅是符号替换,也可以赋值C.宏替换是在程序编译时完成的,不占用程序运行时间D.引用带参数的宏时,实际参数与宏定义中的形式参数类型应一致43.设char a='\70';则变量a 中( A )A.包含1个字符B.包含2个字符C.包含3个字符D.是非法表示44.设long i=65539;,执行语句printf("%d ",i);后的输出结果是( B )A.-3B.3C.65539D.数据不确定45.设float c,f;,将数学表达式C=95(F-32)能正确表示成C 语言赋值表达式的是(A )A.c=5*(f-32)/9B.c=5/9(f-32)C.c=5/9*(f-32)D.c=5/(9*(f-32))46.设int i=10;,表达式30-i<=i<=9的值是( B )A.0B.1C.9D.2047.以下不能..看作一条C 语句的是( D )A.{;}B.a=5,b=5,c=5;C.if(x>=0&&y=0);D.if(x= =0)a=5;b=10;48.在函数调用时,以下说法正确的是( B )A.函数调用后必须带回返回值B.实际参数和形式参数可以同名C.函数间的数据传递不可以使用全局变量D.主调函数和被调函数总是在同一个文件里49.设int x=7;,执行语句x=x <<2;后,变量x 的值是( D )A.1B.3C.14D.2850.执行语句printf("|%9.4f|\n ",12345.67);后的输出结果是( B )A.|2345.6700|B.|12345.6700|C.|12345.670|D.|12345.67|51.以下说法中正确的是(B)A.字符型变量可以存放字符串B.递归调用是指函数调用自己C.所有的外部函数只能在本文件中被调用D.在循环体中break语句和continue语句的作用都是结束循环52.设char s[6],*ps=s;,则正确的赋值语句是(C)A.s="12345";B.*s="12345";C.ps="12345";D.*ps="12345";53.设int a[ ]={1,2,3,4,5},*p=a;则数组元素的正确表示是(A)A.a[2]B.&(a+1)C.a[5]D.&p54.对二维数组的正确定义是(C)A.int a[ ] [ ]={1,2,3,4,5,6};B.int a[2] [ ]={1,2,3,4,5,6};C.int a[ ] [3]={1,2,3,4,5,6};D.int a[2,3]={1,2,3,4,5,6};55.字符数组s不能..作为字符串使用的是(D)A.char s[ ]="happy";B.char s[ ]={"happy"};C.char s[6]={'h','a','p','p','y'};D.char s[4]={'h','a','p','p','y'};56.若定义函数:fun(int a,float b){return a+b;}则该函数的数据类型是(A)A.intB.voidC.floatD.不确定57.设struct st{ int a;float b;}s, *p=&s;则正确的引用是(B)A.(*).s.aB.(*p).aC.p->s.aD.p.s.a58.设enum color {red,yellow=2,blue,white,black}r=white;,执行printf("%d",r);后的输出结果是(D)A.0B.1C.3D.459.以下说法中错误..的是(C)A.共用型数据中所有成员的首地址都是同一个B.可以用已定义的共用型来定义数组或指针变量的类型C.共用型数据中的成员可以是结构型,但不可以是共用型D.用typedef定义新类型取代原有类型后,原类型仍可有效使用60.设#define L(x) 2*3.14*x则L(x)是(D)A.函数名B.函数调用C.无参的宏名D.带参的宏名61.字符串”xyzd”再内存占用的字节数为( C )。

相关主题