C/C++知识点之嵌入式软件测试题(C语言)V1.0
小标 2018-09-19 来源 : 阅读 1591 评论 0

摘要:本文主要向大家介绍了C/C++知识点之嵌入式软件测试题(C语言)V1.0,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之嵌入式软件测试题(C语言)V1.0,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

以下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/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程