2.1 选择题
(103)设有以下语句:
char a=3, b=6, c;
c = a^b<<2;
则c的二进制值是_____。
a. 00011011
b. 00010100
c. 00011100
d. 00011000
(104)表达式0x13&0x17的值是___。
a. 0x17
b. 0x13
c. 0xf8
d. 0xec
(105)表达式0xl3|0xl7的值是____。
a. 0x13
b. 0x17
c. 0xE8
d. 0xc8
(106) 以下叙述中正确的是_____。
a. 表达式a&=b等价于a=a&b
b. 表达式a|=b等价于a=a|b
c. 表达式a!=b等价于a=a!b
d. 表达式a^=b等价于a=a^b
(107) 要求运算数必须是整型或字符型的运算符有_____。
a.&&    b.&  c.!  d.||
(108) 运作对象必须是整型数的运算符是_____。
a. %    b. .    c. /    d. **
(109) 根据以下定义,错误的表达式是_____。
struct
{
int a;
char b;
} Q, *p = &Q;
a. Q.a
b. (*p).b
c. p->a
d. *p.b
(110) 下面关于sizeof操作符使用的说法是____
a. 当操作数是数组类型时,其结果是数组的总字节数;
b. 当操作数是联合类型时,其结果是其最大字节成员的字节数;
c. 当操作数是结构类型时,其结果是所有成员的总字节数;
d. 当操作数是指针类型时,其结果是所指对象的总字节数。
(111) 下面关于sizeof操作符的说明正确的是_____。
a. 其参数既可以是类型,也可以是变量;
b. 其返回值是带符号的整型;
c. 当操作数是指针变量时,其返回值依赖于编译器;
d. 当操作数是函数中的数组形参或函数类型的形参,其结果是指针的大小。
(112) 若x是单精度实型变量,表达式 x = 10/4 的值是_____ 。
a. 2.5        b. 2.0        c. 3        d. 2
(113) 表达式 !x 等价于_____。
a. x == 0        b. x == 1      c. x != 0    d. x != 1
(114) ______是合法的用户自定义标识符。
a. b-b        b. float        c. <fr>          d. _isw
(115) 若变量已正确定义并赋值,表达式______不符合C语言语法。
a. a*b/c;    b. 3.14%2      c. 2, b        d. a/b/c
(116) _____是不正确的字符常量。
a. '\n'        b. '1'          c. "a"          d. '\101'
(117) 在 C 程序中,用_____表示逻辑值"真"。
a. 1          b. 非 0 的数      c. 非 1 的数    d. 大于 0 的数
(118) ______把x、y定义成float类型变量,并赋同一初值3.14。
a. float x, y=3.14;              b. float x, y=2*3.14; 
c. float x=3.14, y=x=3.14;    d. float x=y=3.14;
(119) 假设变量已正确定义,表达式______的值不是2。
a. 2&3      b. 1<<1        c. a==2        d. 1^3
(120) 若变量已正确定义,语句if(a>b) k=0; else k=1;和______等价。 
a. k=(a>b)?1:0;              b. k=a>b;
c. k=a<=b;                    d. a<=b ? 0 : 1;
(121) 表达式 strlen("hello") 的值是_______。
a. 4          b. 5          c. 6        d. 7
(122) 设变量定义为int a[4];
则表达式______不符合C语言语法。
a. *a        b. a[0]      c. a        d. a++
(123) 设变量定义为int x, *p=&x;则&*p相当于_____。
a. p          b. *p        c. x        d. *&x
(124) 对于以下的变量定义,表达式______不符合C语言语法。
struct node
{
int len;
char *pk;
}x = {2, "right"}, *p = &x;
a. p->pk      b. *p.pk        c. *p->pk      d. *x.pk
(125) 下面合法的字符常量有_____。
a. '\084'
b.'X43'
c.'ab'
d."\0"
(126) 以下选项中,非法的字符常量是_____。
a. '\t'  b. '\17'  c. "n"    d. '\xaa'
(127) 根据编码规范,以下不正确的叙述是_____。
a. 在c程序中,每行中只能写-条语句
运算符优先级图片b. 若a是实型变量,c程序中允许赋值a=l0,因此实型变量中可以允许存放整型数
c. 在c程序中,无论是整数还是实数,都能被准确无误地表示
d. 在c程序中,%是只能用于整数运算的运算符
(128) 以下运算符中优先级最低的是___,优先级最高的是___。
a.&&      b.&      c.||      d.|
(129) 在c语言中,要求运算数必须是整型或字符型的运算符是_____。
a.&&      b.&      c.!      d.||
(130) 下面程序的输出结果是______。
unsigned t = 129;
t = t^00;
printf("%d, %o\n", t, t);
a. 0, 0
b. 129, 201
c. 126, 176
d. 101, 145
(131) 下面那几个运算符是对位进行操作的_____。
a. &        b.  ^      c. ~    d. <<
(132) 下面关于位域的说法正确的是_____。
a. 一个位域必须存储在同一个字节中,不能跨两个字节;
b. 位域可以用任何格式输出;
c. 位域可以无名,无名的位域只用来作填充或调整位置,是不能使用的;
d. 位域的引用方式同一般的结构成员。
(133) 下面关于位的说法正确的是_____。
a. 使用位域的一般形式为:位变量名·位域名;
b. 可以定义指向位类型的指针;
c. 定义和位变量的说明位定义与结构定义相同;
d. 长度不能大于一个字节的长度,即不能超过8位二进位;
(134) 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_____。
a. 算术运算、赋值运算、关系运算        b. 关系运算、赋值运算、算术运算
c. 算术运算、关系运算、赋值运算        d. 关系运算、算术运算、赋值运算
(135) 若a是整型变量,表达式 ~(a ^ ~a ) 等价于______。
a. ~a          b. 1          c. 0            d. 2
(136) sizeof(double)是_____。
a. 一种函数调用
b. 一个双精度型表达式
c. 一个整型表达式
d. 一个不合法的表达式
(137) 表示关系x<=y<=z的c语言表达式为____。
a. (X<=Y)&&(Y<=Z)      b. (X<=Y)AND(Y<=Z)
c. (X<=Y<=Z)            d. (X<=Y)&(Y<=Z)
(138) 若变量已被正确定义,下列可作为C语言赋值语句的是____。
a. x=3,y=5 
b. a=b=6        c. i--      d. y=int(x)
(139) 设x,y,z,t均为int型变量,则执行以下语句后,t的值为____。
x=y=z=1;
t=x||y&&z;
a. 不定值        b. 2        c. 1      d. 0
(140) 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a;
  for(b=1;b<=c;b++) s=s+1;
  则与上述程序段功能等价的赋值语句是____。
a. s=a+b;      b. s=a+c;        c. s=s+c;        d. s=b+c;
(141) 以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子的C语言表达式是______。
a. x/y*z  b. x*(1/(y*z))  c. x/y*1/z  d. x/y/z
(142) 有以下程序:
main()
{
int x=3, y=2, z=1;
printf("%d\n",x/y&~z);
}
  程序运行后的输出结果是____。
  a. 3        b. 2        c. 1        d. 0
(143) 以下有4组用户标识符,其中合法的一组是____。
a. For    b. 4d            c. f2_G3          d. WORD
-sub      DO              IF                void
Case      Size            abc              define
(144) 以下选项中合法的字符常量是____。
a. "B"      b. '\010'        c. 68          d. D
(145) 以下选项中,非法的字符常量是_____。
a. '\t'  b. '\17'  c. "n"  d. '\xaa'
(146) 整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是_____。
a. x || y  b. x | y  c. x & y  d. x ^ y
(147) 下面选项中____是不合法的C用户标识符。
a. user  b. switch  c. _345  d. Abc
(148) 下列运算符中    的优先级最低。
a. &&        b. !          c. +          d. =
(149) 已知各变量的类型说明如下:
int  k, a, b;
unsigned  long  w = 5;
double    x = 1.42;
则以下不符合C语言语法的表达式是_____。
a. x%(-3)      b. w+=-2
c. k=(a=2,b=3,a+b)    d. a+=a-=(b=4)*(a=3)
(150) 已知各变量的类型说明如下:
int i=8,k,a,b;
unsigned  long  w=5;
double  x=1.42,y=5.2;
则以下符合C语言语法的表达式是_____。
a. a+=a-=(b=4)*(a=3)      b. a=a*3=2
c. x%(-3)      d. y=f1oat(i)
(151) 以下不正确的叙述是_____。
a. 在C程序中,逗号运算符的优先级最低
b. 在C程序中,APH和aph是两个不同的变量
c. 若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。
d. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。
(152) 以下符合C语言语法的赋值表达式是______。
a. d=9+e+f=d+9  b. d=9+e,f=d+9
c. d=9+e,e++,d+9        d. d=9+e++=d+7
(153) 已知字母A的ASCII码为十进制数65,且c1为字符型,则执行语句c1='A'+'6'-'3';后,c1中的值为______。
a. D      b. 68    c. 不确定的值      d. C
(154) sizeof(float)是_______。
a. 一个双精度型表达式  b. 一个整型表达式
c. 一种函数调用  d. 一
个不合法的表达式
(155) 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为______。
a. int      b. float    c. double    d. 不确定
(156) 表达式18/4*sqrt(4.0)/8值的数据类型为_____。
a. int      b. float    c. double    d. 不确定
(157) 逻辑运算符两侧运算对象的数据类型_____。
a. 只能是0或1
b. 只能是0或非0正数
c. 只能是整型或字符型数据
d. 可以是任何类型的数据
(158) 下关于运算符优先顺序的描述中正确的是_____。
a. 关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符
b. 逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符
c. 赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符
d. 算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符
(159) 能正确表示"当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)
(160) 已知x=43,ch='A',y=0则表达式x>=y && ch<'B' && !Y 的值是_____。
a. 0    b. 语法错    c. 1    d. "假"
(161) 希望当A的值为奇数时,表达式的值为"真",A的值为偶数 表达式的值为"假"。则以下不能满足要求的表达式是_____。
a. A%2==1    b. !(A%2 == 0)  c. !(A%2)    d. A%2
(162) 下列运算符中优先级最低的是_____。
a. ?:    b. &&      c. +    d. !=
(163) 若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是______。
a. (exp==0)  b. (exp=0)
c. (exp==1)  d. (exp!=1) 
(164) 下列运算符中自左向右结合的是____。
a. =  b. ->  c. ?:  d. ++
(165) 对于int i, j; char c; 当输入序列为1dc2 3 4时,执行语句
scanf("%dd%c%*d%*d%d", &i, &c, &j); 后i, j, c的值分别为____。
a. 1 2 'd'  b. 1 2 'c'  c. 1 4 'd'    d. 1 4 'c'
(166) 下列判断闰年的表达式中错误的是____。
a. leap = n % 400 == 0 || n % 4 == 0 && n % 100 != 0;
b. leap = n % 4 == 0 && ( n % 100 != 0 || n % 400 == 0 );
c. leap = ! ( n % 400 != 0 && n % 4 != 0 || n % 100 == 0 );
d. leap = n % 400 == 0 && n % 4 == 0 || n % 100 != 0 ;
(167) 表达式(*ptr->str)++中的++作用在____。
a. ptr上        b. ptr的成员str上
c. ptr的成员str所指向的第一个字符上  d. 以上都不是
(168) 设有变量定义: int a=3, b=4, c=5;
则表达式:c>a>b&&c||!b< c?2:1的值是____。
a. 0    b. 1    c. 2  d. 语法有错
(169) 设有变量定义:int x=1,y=4, z=5;
则表达式:('z' - 'a') % y + (x += y) + (++y != z)的值是____。
a. 4    b. 5    c. 6    d. 7
(170) 表达式______的值是0。
a. 3%5      b. 3/5.0    c. 3/5      d. 3<5
(171) 表达式 !(x>0||y>0) 等价于_____。
a. !x>
0||!y>0     
b. !(x>0)||!(y>0)   
c. !x>0&&!y>0 
d. !(x>0)&&!(y>0)
(172) 若变量已正确定义并赋值,表达式______不符合C语言语法。
a. 4&&3    b. +a      c. a=b=5        d. int(3.14)
(173) 下列运算符中,优先级从高到低依次为_____。
a. &&,!,||      b. ||,&&,!    c. &&,||,!      d. !,&&,||
(174) ______是合法的用户自定义标识符。
a. b-b            b. float          c. <fr>          d. _isw
(175) 若变量已正确定义,表达式______的值不是2。
a. 2&3          b. 1<<1        c. a==2        d. 1^3
(176) 表达式 strlen("hello") 的值是_______。
a.  4            b. 5          c. 6        d. 7
(177) 有以下程序_____。
main()
{
char a, b, c, *d;
a = '\';
b = '\xbc';
c = '\0xab';
d = "\0127";
printf("%c%c%c%c\n", a, b, c, *d);
}
以下叙述中正确的是_____。
a. 程序中只有a='\'; 语句不正确
b. b='\xbc'; 语句不正确
c. d="\0127"; 语句不正确
d. a='\';和 c='\0xab'; 语句都不正确
(178) 以下不能定义为用户标识符的是_____。
a. scanf        b. Void      c. _3com_      d. int
(179) 以下选项中可作为C语言合法整数的是______。
a. 10110B        b. 0386      c. 0Xffa        d. x2a2
(180) 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是_____。
a. x=x*100+0.5/100.0;            b. x=(x*100+0.5)/100.0;
c. x=(int)(x*100+0.5)/100.0;    d. x=(x/100+0.5)*100.0;
(181) 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是____。
a. -3  b. 9  c. -12  d. 6
(182) 设a为整形变量,不能正确表达数学关系:10<a<15 的C语言表达式是____
a. 10<a<15                      b. a==11||a==12||a==13||a==14
c. a>10&&a<15                  d. !(a<10)&&!(a>=15)
(183) 若有以下定义和语句:
char c1='b', c2='e';
printf("%d,%c\n", c2-c1, c2-'a'+"A")
则输出结果是_______。
a. 2,M                        b. 3,E
c. 2,e                        d. 输出结果不确定
(184) 设x为int型变量,则执行以下语句后,x的值为_____。
x=10; x+=x-=x-x;
a. 10  b. 20  c. 40  d. 30
(185) 设x,y,z,t均为int型变量,则执行以下语句后,t的值为_____。
x=y=z=1;
t=++x||++y&&++z;
a. 不定值  b. 2  c. 1  d. 0
(186) 标识符只能由字母、数字和下划线三种字符组成,且第一个字符_____。
a. 必须为字母            b. 必须为下划线
c. 必须为字母或下划线  d. 可以是字母,数字和下划线中任一种字符
(187) 若x是整型变量,表达式 x=10.0/4.0 的值是_____ 。
a. 2.5        b. 2.0      c. 3      d. 2
(188)对于以下的变量定义,表达式______是正确的。
struct node
{
char s[10];
int k;
}p[4];
a. p->k = 2      b. p[0].s

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。