嵌入式培训 百分网手机站

嵌入式面试C语言试题「」

时间:2017-10-27 11:43:02 嵌入式培训 我要投稿

2016年嵌入式面试C语言试题「精选」

  第1题: 考查对volatile关键字的认识

  #include

  static jmp_buf buf;

  main()

  {

  volatile int b;

  b =3;

  if(setjmp(buf)!=0)

  {

  printf("%d ", b);

  exit(0);

  }

  b=5;

  longjmp(buf , 1);

  }

  请问, 这段程序的输出是

  (a) 3

  (b) 5

  (c) 0

  (d) 以上均不是

  第2题:考查类型转换

  main()

  {

  struct node

  {

  int a;

  int b;

  int c;

  };

  struct node s= { 3, 5,6 };

  struct node *pt = &s;

  printf("%d" , *(int*)pt);

  }

  这段程序的输出是:

  (a) 3

  (b) 5

  (c) 6

  (d) 7

  第3题:考查递归调用

  int foo ( int x , int n)

  {

  int val;

  val =1;

  if (n>0)

  {

  if (n%2 == 1) val = val *x;

  val = val * foo(x*x , n/2);

  }

  return val;

  }

  这段代码对x和n完成什么样的'功能(操作)?

  (a) x^n (x的n次幂)

  (b) x*n(x与n的乘积)

  (c) n^x(n的x次幂)

  (d) 以上均不是

  第4题:考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人

  main()

  {

  int a[5] = {1,2,3,4,5};

  int *ptr = (int*)(&a+1);

  printf("%d %d" , *(a+1), *(ptr-1));

  }

  这段程序的输出是:

  (a) 2 2

  (b) 2 1

  (c) 2 5

  (d) 以上均不是

  第5题:考查多维数组与指针

  void foo(int [][3]);

  main()

  {

  int a [3][3]= { { 1,2,3} , { 4,5,6},{7,8,9}};

  foo(a);

  printf("%d" , a[2][1]);

  }

  void foo(int b[][3])

  {

  ++ b;

  b[1][1] =9;

  }

  这段程序的输出是:

  (a) 8

  (b) 9

  (c) 7

  (d)以上均不对