抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > 嵌入式软件测试题(C语言)V1.0

嵌入式软件测试题(C语言)V1.0

时间:2022-09-01 08:45:31

相关推荐

嵌入式软件测试题(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<a; i++)

{

for(k=0; k<b; k++)

{

printf(“i=%d, k=%d\n”, i, k);

}

}

乙:

for(i=0; i<b; i++)

{

for(k=0; k<a; k++)

{

printf(“i=%d, k=%d\n”, i, k);

}

}

A、甲; B、乙; C、一样; D、无法确定;

27、FIFO的特点有( B )

A、FIFO满的时候,会导致成员数据错乱;

B、最先进入的成员最先出来;

C、FIFO空的时候,其内部所有存储单元的值都是0;

D、它和栈是等效的;

28、常见的排序算法有( AB )

A、冒泡法; B、插入法; C、遍历法; D、倒序法;

29、在一个有1000个成员的整型数组中,其成员都是按从小到大排列的,则平均来看查找是否存在某一个值的最快算法是( C )

A、遍历法; B、随机法; C、二分法; D、倒序法;

30、如果一个事件需要在同时满足5个条件的情况下才会运行,则在使用形如:

if(a && b && c && d && e)

{

…….//待执行语句;

}

的语句时,应该将这5个条件按照什么顺序放置。( A )

A、发生概率从低到高排列; B、发生概率从高到低排列;

C、随机放置; D、发生概率中等的放在最前面;

31、以下属于枚举特点的是( AB )

A、可以定义成一种数据类型; B、枚举值必须是整数;

C、枚举值必须是连续的; D、枚举和宏定义是一样的;

32、如果一段正常的代码中出现了一个多余的分号,形如:

jar = QUART;

printf("%d,", jar);

jar = jar + PINT;

;

printf("%d\n", jar);

则这段代码会( D )

A、无法编译通过; B、能编译通过,但不能运行;

C、能编译通过,但运行时可能程序会崩溃; D、无任何影响;

33、有如下一段代码,即在if语句的后面多了一个分号,那么( CD )

if(a && b) ;

{

printf(“hello word!\n”);

}

A、不论a、b是何值,都不会打印出“helloword!”; B、无法编译通过;

C、不论a、b是何值,都会打印出“helloword!”; D、能编译通过;

34、下面的代码存在的问题是( BC )

char a = 0;

char *p;

while(a < = 255)

{

p = malloc(100);

……

a++;

}

free(p);

p = NULL;

A、存在野指针; B、存在内存泄漏; C、存在死循环; D、没有任何问题;

35、有如下代码:

enum Liquid {OUNCE = 1,CUP = 2,PINT = 16,QUART = 32, GALLON = 128};

enum Liquid jar;

jar = QUART;

printf("%d,", jar);

jar = jar + PINT;

printf("%d\n", jar);

则打印出来的内容将会是( C )

A、32, 0; B、0, 0; C、32, 48; D、32, 随机值;

36、下列代码存在的问题有( C )

typedef struct DATA_MEMBER_S{

struct DATA_MEMBER_S *p_nest;

int a;

int b;

char c[4];

}DATA_MEMBER_T;

int main()

{

DATA_MEMBER_T d = {.p_nest = NULL, .a = 1, .b = 2, .c = "abcd"};

printf("%d, %d, %s\n",d.a, d.b, d.c);

}

A、结构体定义不正确; B、结构体初始化有误;

C、打印语句可能会出错; D、没有任何问题;

37、一个函数( CD )

A、必须有入参; B、必须有返回值;

C、可以调用自己; D、返回值可以是另一个函数;

38、do{…}while()和while(){…}语句的特点有( ACD )

A、前者至少会执行一次{…}中的语句;

B、后者有可能会死循环,而前者不会;

C、两个都可以使用break跳出;

D、两者都可以使用continue语句;

39、以下是

for(statement1;statement2;statement3)

{

…/*循环主体*/

}

语句的特点的是( D )

A、statement1、statement2、statement3三个表达式不能同时为空;

B、for的运行效率比while高;

C、for循环主体不能使用break语句;

D、for循环主体可以使用continue语句;

40、以下说法正确的是( AB )

A、if…else…语句和switch…case…语句可以相互嵌套使用;

B、能使用switch语句的场景都可以用if…else…类的语句实现;

C、能使用if…else…类语句的场景都可以用switch语句实现;

D、在switch…case…语句主体中使用continue语句会跳转到switch头部重新开始执行;

41、在有N个进程的系统中,长时间平均来看每个进程的执行时间是( D )

A、1/N; B、1/2N; C、1/N2; D、不确定的

42、操作系统中进程“时间片轮转”的作用是( C )

A、系统进程与应用进程轮流运行;

B、高优先级进程与低优先级进程轮流运行;

C、同优先级进程间轮流运行;

D、进程与中断轮流运行;

43、跨进程全局资源共享时,可以用哪些方式进行保护( ABCD )

A、二进制信号量; B、计数制信号量;

C、关闭进程调度; D、关闭所有中断;

44、创建一个进程时,必不可少的参数有( ABC )

A、进程可用的栈深度; B、进程优先级;

C、进程入口函数; D、进程的终止时间;

45、使用无“优先级继承”机制的内核对象(比如普通二进制信号量)对全局资源进行保护时,可能会导致( B ),应该使用互斥锁(mutex)。

A、不能有效保护数据完整性; B、进程优先级翻转;

C、进程挂起; D、内核崩溃;

46、两个进程间交互信息的方式可以有( ABC )

A、全局变量; B、信号量;

C、队列或管道; D、中断;

47、被挂起(suspend)的进程什么时候才能恢复运行( B )

A、超时时间到了; B、被另一个进程或中断唤起;

C、自动随时唤起; D、等到其它进程都不运行的时候;

48、一个进程的栈空间溢出后可能会导致( A )

A、系统崩溃; B、进程挂起; C、进程被删除; D、进程被重新启动;

49、如果一个高优先级的进程进入了“死循环”,始终占据CPU不释放,可能会导致( AB )

A、CPU使用率高; B、低优先级进程得不到运行;

C、中断得不到执行; D、进程调度器会崩溃;

50、如果一个进程频繁申请动态内存(比如使用malloc)而不释放,可能会导致( ABD )

A、其它进程申请不到动态内存; B、本进程申请不到动态内存;

C、进程无法切换; D、动态内存耗尽;

如果觉得《嵌入式软件测试题(C语言)V1.0》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。