C 语言单元测试一(1-4章)一、选择题:(每题2分,共66分)1.若有定义语句int b=2; 则表达式 (b<<2)/(3||b)的值是 A )4 B )8 C )0 D )2 2.有以下程序#include <stdio.h> main(){ char a='H';a=(a>='A'&&a<='Z') ? (a-'A'+'a'):a; printf("%c\n",a); }程序运行后的输出结果是A )AB )aC )HD )h3.若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch 语句是4.在C 语言中,字符型数据在内存中以( )形式存放。
A)原码 B )ASCII 码 C )反码 D )BCD 码 5.下列关系表达式中,结果为“假”的是A )(3+4)>6B )(3!=4)>2C )3<=4||3D )(3<4)==1 6.C 语言中char 类型数据占字节数为 A )3 B )4 C )1 D )2 7.若有定义和语句:int a,b;scanf("%d,%d",&a,&b);以下选项中的输入数据,不能把值3赋给变量a 、5赋给变量b 的是(说明:符号□表示空格)A )3,5,B )3,5,4C )3□,5D )3,5 8.在C 语言中,要求运算数必须是整型的运算符是 A )/ B )++ C )!= D )% 9.已知各变量的类型说明如下:int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2; 则以下正确的表达式是A )a + = a -= (b=4) * (a=3)B )a = a * 3=2C )x % (-3)D )y = float(i) 10.以下叙述中错误的是A )非零的数值型常量有正值和负值的区分B )常量是在程序运行过程中值不能被改变的量C )定义符号常量必须用类型名来设定常量的类型D )用符号名表示的常量叫符号常量 11.以下选项中表示一个合法的常量是(说明:符号□表示空格) A )9□9□9 B )0Xab C )123E0.2 D )2.7e 12.变量a 中的数据用二进制表示的形式是01011101,变量b 中的数据用二进制表示的形式是11110000。
若要求将a 的高4位取反,低4位不变,所要执行的运算是A )a^bB )a|bC )a&bD )a<<4 13.当变量c 的值不为2、4、6时,值也为“真”的表达式是A )(c==2)||(c==4)||(c==6)B )(c>=2 && c<=6) || (c!=3)||(c!=5)C )(c>=2 && c<=6) && !(c%2)D )(c>=2 && c<=6) && (c%2!=1) 14.有以下程序段char ch; int k; ch='a'; k=12;printf("%c,%d,",ch,ch,k); printf("k=%d\n",k);已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A )因变量类型与格式描述符的类型不匹配输出无定值 B )输出项与格式描述符个数不符,输出为零值或不定值 C )a,97,12k=12 D )a,97,k=12 15.int a=123,b=12345;printf(“%4d,%4d ”,a,b);的输出结果为(说明:符号□表示空格)A )□123,1234B )123,12345C )□123,12345D )123□,1234 16.以下程序的运行结果是 void main() { int m=5;if (m++ > 5) printf ("%d\n", m); else printf ("%d\n", m-- ); }A )4B )5C )6D )717.设以下变量均为int 类型,则值不等于7的表达式是A )(x= y= 6, x+y,x+1)B )(x= y= 6,x+y,y+1)C )(x= 6,x+1,y= 6,x+y)D )(y=6,y+l,x = y,x+1) 18.以下关于运算符优先顺序的描述中正确的是A )关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符B )逻辑运算符< 关系运算符< 算术运算符< 赋值运算符C )赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符D )算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符 19.以下选项中可作为C 语言合法常量的是A )-80B )-080C )-8e1.0D )-80.0e 20.下列可用于C 语言用户标识符的一组是A )void, define, WORDB )a3_3,_123,CarC )For, -abc, IF CaseD )2a, DO, sizeof 21.有以下程序#include <stdio.h> main(){ int a=24,b;b=a>>2;printf("%d\n",b); }程序运行后的输出结果是D )switch(a*a+b*b) { default : break;case 3 : y=a+b;break; case 2 : y=a-b;break; }C )switch(a+b){ case1 : case3 : y=a+b;break; case0 : case4 : y=a-b; }B )switch a*b{ case 10 : x=a+b; Default : y=a-b; }A )switch(a+9){ case c1 : y=a-b; case c2 : y=a+b; }A)2 B)4 C)6 D)822.以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)A)printf("%c\n",'a'-32); B)printf("%d\n",'A');C)printf("%c\n",65); D)printf("%c\n",'B'-1);23.下列条件语句中,输出结果与其他语句不同的是A)if(a) printf("%d\n",x); else printf("%d\n",y);B)if(a==0) printf("%d\n",y); else printf("%d\n",x);C)if(a!=0) printf("%d\n",x); else printf("%d\n",y);D)if(a==0) printf("%d\n",x); else printf("%d\n",y);24.有以下程序#include <stdio.h>main(){ int a=1,b=0;if(--a) b++;else if(a==0) b+=2;else b+=3;printf("%d\n",b);}程序运行后的输出结果是A)0 B)1 C)2 D)325.若有定义语句:int k1=10,k2=20; ,执行表达式 (k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为A)0和1 B)0和20 C)10和1 D)10和2026.若有定义语句:int x=12,y=8,z; ,在其后执行语句z=0.9+x/y;,则z的值为A)1.9 B)1 C)2 D)2.427.若有定义语句:int a=10;double b=3.14; ,则表达式 'A'+a+b 值的类型是A)char B)int C)double D)float28.有以下程序#include <stdio.h>main(){ unsigned char a=8,c;c=a>>3;printf("%d\n",c);}程序运行后的输出结果是A)32 B)16 C)1 D)029.有以下定义:int a; long b; double x,y;,则以下选项中正确的表达式是A)a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x30.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是A)a=(b=4)=3 B)a=b=c+1 C)a=(b=4)+c D)a=1+(b=c=4)31.有以下程序#include <stdio.h>main(){ int x=011;printf("%d\n",++x);}程序运行后的输出结果是A)12 B)11 C)10 D)932.能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是A)(x>=1) && (x<=10) && (x>=200) && (x<=210) B)(x>=1) || (x<=10) || (x>=200) || (x<=210) C)(x>=1) && (x<=10) || (x>=200) && (x<=210) D)(x>=1) || (x<=10) && (x>=200) || (x<=210) 33.以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数二、填空题(每空2分,共20分)1.有以下程序:main( ){ int k=0; char c1=’a’,c2=’b’;scanf("%d%c%c",&k,&c1,&c2); printf("%d,%c,%c\n",k,c1,c2); }若运行时从键盘输入:55 A B<回车>,则输出结果是______________。