嵌入式软件测试题(C语言)V1.0
以下50个选择题,每题都可能存在一个或多个正确答案,请找出所有正确答案填在每题对应的括号中。多选、错选、漏选或不选,均不得分。每题2分。总计100分。
为了缩短篇幅和节约大家的时间,试题中的代码可能不是完整的代码,答题时请不用考虑代码是否具有可编译和可执行性,仅分析代码本身即可。
1、定义一个数组int a[2] = {1,3},那么a的值是( D )
A、0; B、1; C、3; D、不能确定;
2、有如下代码:
float a = 123.45678;
if(123.45678 == a)
{
printf(“a = 123.45678”);
}
else if(123.45678 > a)
{
printf(“a > 123.45678”);
}
else if(123.45678 < a)
{
printf(“a < 123.45678”);
}
else
{
printf(“不能确定”);
}
请问上述代码输出的结果有可能是( ABC )
A、a = 123.45678; B、a > 123.45678; C、a < 123.45678; D、不能确定;
3、在一台32位的PC上运行下述代码,结果可能是( C )
int *a = NULL;
char b[8] = {0};
printf(“sizeof(a) = %d,sizeof(b) = %d”, sizeof(a),sizeof(b));
A、sizeof(a) = 2,sizeof(b) = 2; B、sizeof(a) = 4,sizeof(b) = 4;
C、sizeof(a) = 4,sizeof(b) = 8; D、sizeof(a) = 8,sizeof(b) = 8;
4、下述代码运行后,哪些值可以是变量X的值( AC )
X = Y ^ 0x80;
X = X & 0xF0;
A、0xF0; B、0x0F; C、160; D、112
5、下述代码运行后,哪些值可以是变量R的值( BCD )
int a;
…… /*此处忽略若干代码*/
R = (a+1) % 0xABCD;
A、0xABCD; B、0; C、256; D、1024;
6、代码“const int a[2] ={5, 2};”中const的作用是( BD )
A、修饰a; B、修饰{5, 2};
C、说明a是只读的; D、说明数组a中存储的内容是只读的;
7、关键字“NULL”的含义是( C )
A、未初始化的指针; B、未定义的指针;
C、空指针; D、整型的“0”;
8、下述代码可能的作用是( C )
int a,b;
…… /*此处忽略若干代码*/
a = a ^ b;
b = a ^ b;
a = a ^ b;
A、求a、b的和; B、判断a、b的大小关系;
C、交换a、b的值; D、加密a、b的值;
9、如果在一个大字节序(大端)的32位系统中定义变量:“unsigned long testCpuArchitecture = 0x12345678;”,那么“*(unsigned char*)&testCpuArchitecture”的值应该是( A )
A、0x12; B、0x34; C、0x56; D、0x78
10、在一个32位的系统中有下述代码,则sizeof(A_BIT_T)和sizeof(bitMap)的值分别是( B )
typedef unsigned char uint8;
typedef struct{
uint8 bit : 1;
}A_BIT_T;
A_BIT_T bitMap[16] = {0};
A、1,2; B、1,16; C、4,2; D、4,16;
11、一个指针的定义为:“char *ptr = NULL;”,则下列表述正确的有( AB )
A、指针所指向的内容可以被修改;
B、指针本身的值是可以被修改的;
C、指针本身所在的地址可以被修改;
D、指针只能指向一个存放了字符的存储位置;
12、一个函数如果没有“return”语句,那么这个函数将( D )
A、一直无限循环运行; B、可能在任意一句语句处退出;
C、随时可能崩溃; D、运行完成后退出;
13、宏定义的特点有( ABD )
A、可以被多个函数调用; B、可能存在副作用;
C、运行效率比定义函数高; D、多次调用后占用的代码存储空间比函数多;
14、在一个“while”循环中,允许使用“break”和“continue”的数量是( D )
A、两者只能使用一个,每个只能使用一次;
B、break可以使用多次,continue只能一次;
C、break只能使用一次,continue可以多次;
D、两者均不限次数;
15、以下是static关键字的作用的有( ABC )
A、修饰局部变量,表示此变量只能在当前函数内部被访问,其存储在堆和栈之外;
B、修饰函数,表示此函数只能在当前文件内部被访问;
C、修饰全局变量,表示此变量只能在当前文件内部被访问;
D、修饰函数的入参,表示此入参是只读的,不可被修改;
16、下列代码运行结束后,i的值是( B )
int i = 1;
switch(i)
{
case 0:
i++;
break;
case 1:
++i;
case 3:
i++;
break;
case 4:
i++;
default:
++i;
}
A、2 B、3 C、4 D、5
17、在一个32位的系统中有如下定义,则sizeof(U)的值是( C )
union {
char c;
char *p;
}U;
A、1 B、2 C、4 D、8
18、“野指针”是( BD )
A、未定义的指针; B、没有被赋值的指针;
C、指向的地址确定,但其中的内容是未知的; D、指向的地址是不确定的指针;
19、头文件中的ifndef…define…endif的作用是( B )
A、说明这是一个头文件;
B、防止被重复包含;
C、优化头文件,使其占用更少的存储空间;
D、定义头文件的名称,以便被引用;
20、下列代码,哪几行是编译时有错误或运行时会发生异常的( C )
1:char a;
2:char *str=&a;
3:strcpy(str,"hello");
4:printf(str);
A、第1行; B、第2行; C、第3行; D、第4行;
21、为什么将结构体数据传递到函数内部时,建议函数的入参使用结构体指针而不是结构体( BD )
A、节省堆; B、节省栈; C、节省代码量; D、运行效率更高;
22、在32位的系统中有一个双向链表,每个链表成员存放三个字符信息,则一个链表成员至少需要占用几个字节的存储空间( C )
A、3; B、9; C、12; D、18
23、可用于实现循环队列的数据结构可以是( BC )
A、平衡二叉树; B、数组; C、双向链表; D、无冲突HASH表
24、在数据成员个数较多且数据内容较随机的情况下,查找一个成员的平均效率最高的数据结构是( D )
A、平衡二叉树; B、数组; C、双向链表; D、无冲突HASH表
25、最后进入栈的数据存放在栈的( A )
A、顶部; B、中部; C、底部; D、可以是任意位置;
26、假设a = 100,b = 1000,则下面两个for循环,哪个效率更高( A )
甲:
for(i=0; i
{ for(k=0; k
{ printf(“i=%d, k=%d\n”, i, k); } } 乙: for(i=0; i
{