嵌入式软件工程师笔试题及答案

时间:2023-02-28 06:15:15 嵌入式培训 我要投稿
  • 相关推荐

2017嵌入式软件工程师笔试题及答案

  一、选择题

2017嵌入式软件工程师笔试题及答案

  1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是

  A.(a+b)*c/2

  B.(1/2)*(a+b)*c

  C.(a+b)*c*1/2

  D.c/2*(a+b)

  参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因为在计算1/2是就是0,如果改成1/2.0就正确了。

  2:为了向二进制文件尾部增加数据,打开文件的方式应采用

  A.″ab″

  B.″rb+″

  C.″wb″

  D.″wb+″

  参考答案:D

  3:下述程序执行后的输出结果是

  #include

  main()

  {

  int x='f';

  printf("%c\n",'a'+(x-'a'+1));

  }

  A.g

  B.h

  C.i

  D.j

  参考答案:A

  4:C语言中,下列运算符优先级最高的是

  A.!

  B.%

  C.>>

  D.= =

  参考答案:A

  5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。

  A.*a

  B.a [ 0 ]

  C.a

  D.a++

  参考答案:D

  6:执行语句“ k=7>>1; ”后,变量 k 的当前值是

  A.15

  B.31

  C.3

  D.1

  参考答案:C

  7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型

  A.void

  B.char

  C.float

  D.int

  参考答案:D

  8:若main()函数带参数,参数个数最多是

  A.0

  B.1

  C.2

  D.3

  参考答案:C 只知道有定义形式main(int argc,char* argv[]))

  9:若有宏定义:#define MOD(x,y) x%y

  则执行以下语句后的输出结果是

  int a=13,b=94;

  printf(″%d\n″,MOD(b,a+4));

  A.5

  B.7

  C.9

  D.11

  参考答案:B

  10:下列各个错误中,哪一个不属于编译错误

  A.改变 x 原值 3 为 5 ,写作“ x==5 ;”

  B.花括号不配对

  C.复合语句中的最后一条语句后未加分号

  D.变量有引用、无定义

  参考答案:A

  11:下列程序段运行后, x 的值是( )

  a=1;b=2;x=0;

  if(!( -- a))x -- ;

  if(!b)x=7;else ++x;

  A.0

  B.3

  C.6

  D.7

  参考答案:A

  12:设

  #define N 3

  #define Y(n) ((N+1)*n)

  则表达式2*(N+Y(5+1))的值是

  A.42

  B.48

  C.54

  D.出错

  参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉

  13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是

  A.def

  B.d

  C.e

  D.0

  参考答案:C

  14:下列转义字符中错误的是

  A.′\000′

  B.′\14′

  C.′\x111′

  D.′\2′

  参考答案:C error C2022: '273' : too big for character

  15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为

  A.算术运算、赋值运算、关系运算

  B.算术运算、关系运算、赋值运算

  C.关系运算、赋值运算、算术运算

  D.关系运算、算术运算、赋值运算

  参考答案:B

  16:设#define N 3

  #define Y(n) ((N+1)*n)

  则表达式2*(N+Y(5+1))的值是

  A.42

  B.48

  C.54

  D.出错

  参考答案:B

  17:表达式 strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个

  A.非零整数

  B.浮点数

  C.0

  D.字符

  参考答案: A

  18:设struct

  { short a;

  char b;

  float c;

  }cs;

  则sizeof(cs)的值是

  A.4

  B.5

  C.6

  D.7

  参考答案: D 字节对齐的话应该是8

  19:若变量已正确定义,表达式( j=3 , j++ )的值是

  A.3

  B.4

  C.5

  D.0

  参考答案:A

  20:C 语言中运算对象必须是整型的运算符是

  A.%

  B./

  C.!

  D.**

  参考答案:A

  二、简答题

  21:打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...

  例子:当N =5,打印出下面的图形:

  X X X X X

  X Y Y Y X

  X Y 0 Y X

  X Y Y Y X

  X X X X X

  22:谈谈COM的线程模型。然后讨论进程内/外组件的差别。

  23:多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?

  参考答案:

虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.
而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键.

  24:#include

  void main()

  { int c;

  while ((c=getchar())!= ′\ n ′ )

  switch(c - ′ 2 ′ )

  { case 0:

  case 1:putchar(c+4);break;

  case 2:putchar(c+4);break;

  case 3:putchar(c+3);break;

  default:putchar(c+2);break;

  }

  printf( ″\ n ″ );

  }

  运行时输入: 2473 ,输出结果:

  参考答案:6897 VC++6.0测试过

  25:用两个栈实现一个队列的功能?

  参考答案:

  设2个栈为A,B, 一开始均为空.入队:

  将新元素push入栈A;出队:

  (1)判断栈B是否为空;

  (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;

  (3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1),

  26:写一语句实现x是否为2的若干次幂的判断。

  参考答案:!(X)&(X-1)

  27:解二次方程:a*x*x+b*x+c

  int Quadratic( double a,double b,double c,double& x1,double& x2);

  返回值:解的个数

  28:如何判别一个数是unsigned。

  参考答案;

  #define issignal(x) ((x>=0 && ~x>=0) ? 1:0) //为1是无符号 为0有符号

  29:执行下述程序的输出结果是 ABCDEFCDEFEF 。

  #include

  char b[]="ABCDEF";

  main()

  {

  char *bp;

  for (bp=b;*bp;bp+=2)

  printf("%s",bp);

  printf("\n");

  }

  30:已知一个数组table,用一个宏定义,求出数据的元素个数。

  参考答案:#define NTBL

  #define NTBL (sizeof(table)/sizeof(table[0]))

【嵌入式软件工程师笔试题及答案】相关文章:

嵌入式软件工程师面试题06-23

2016年嵌入式工程师面试题及答案「精选」08-24

2016最新嵌入式笔试题及答案06-21

2016年嵌入式系统复习试题及答案08-21

嵌入式助理工程师认证考试题库及答案06-21

2016年嵌入式软件助理工程师认证考试试题题库06-18

InDesign软件认证考试试题及答案08-11

2016年计算机软件测试工程师笔试题及答案08-22

2018咨询工程师考试模拟试题及答案08-12