嵌入式系统开发人员C语言测试题 (运算符与表达式)

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 237 收藏 0 点赞 0 评论 0

一. 选择题(共15题,每题3分。)
(1)设有以下语句:
char a=3, b=6, c;
c = a^b<<2;
则c的二进制值是_____。
a. 00011011
b. 00010100
c. 00011100
d. 00011000

(2)表达式0x13&0x17的值是___。
a. 0x17
b. 0x13
c. 0xf8
d. 0xec

(3)表达式0xl3|0xl7的值是____。
a. 0x13
b. 0x17
c. 0xE8
d. 0xc8

(4) 以下叙述中正确的是_____。
a. 表达式a&=b等价于a=a&b
b. 表达式a|=b等价于a=a|b
c. 表达式a!=b等价于a=a!b
d. 表达式a^=b等价于a=a^b

(5) 运作对象必须是整型数的运算符是_____。
a. %    b. .    c. /    d. **

(6) 根据以下定义,错误的表达式是_____。
struct
{
int a;
char b;
} Q, *p = &Q;

a. Q.a
b. (*p).b
c. p->a
d. *p.b

(7) 若x是单精度实型变量,表达式 x = 10/4 的值是_____ 。
a. 2.5         b. 2.0        c. 3         d. 2

(8) 表达式 !x 等价于_____。
a. x == 0        b. x == 1       c. x != 0     d. x != 1

(9) ______是合法的用户自定义标识符。
a. b-b        b. float         c. <fr>          d. _isw

(10) 若变量已正确定义并赋值,表达式______不符合C语言语法。
a. a*b/c;     b. 3.14%2       c. 2, b         d. a/b/c

(11) _____是不正确的字符常量。
a. ‘n’        b. ‘1’           c. “a”          d. ‘101’

(12) 在 C 程序中,用_____表示逻辑值”真”。
a. 1           b. 非 0 的数      c. 非 1 的数     d. 大于 0 的数

(13) ______把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;

(14) 假设变量已正确定义,表达式______的值不是2。
a. 2&3       b. 1<<1         c. a==2         d. 1^3

(15) 若变量已正确定义,语句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;

二.填空题(每题5分)。

(1) &运算符作为单目运算符时表示的是____运算;作为双目运算符时表示的是_____运算。
(2) 请计算sizeof的值:
char str[] = “Hello” ;
char *p = str ;
int n = 10;
请计算
sizeof (str ) = ____
sizeof ( p ) = _____
sizeof ( n ) = ______

(3) 请计算sizeof的值:
void Func ( char str[100])
{
// 请计算
sizeof( str ) = _____
}

(4) 请计算sizeof的值:
void *p = malloc( 100 );
// 请计算
sizeof ( p ) = ______

(5) 下列程序段的输出是_______。
#define f(a, b, x)  a*x+b
printf(“%d, %dn”, f(3,2,1), f(6, 5, f(3, 2, 1)));

(6) 下列程序段的输出是_____。
main()
{
int k;
for(k=1; k<5; k++)
{
if(k % 2)  printf(“*”);
else continue;
printf(“#”);
}}

三.简单题(共3题,每题10分)

(1) 指出下面程序的错误并改正:
void main(void)
{int a,b;
a = 1;
b = a/++a;
printf(“b equals %dn”, b);}

(2) int a=391,b=1971; 写出 a^b^a的值。

(3) 语句:x++;?++x; x=x+1;?x=l+x; ,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句。

评论列表