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

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

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

#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)以上均不对