您的位置:首页 > 编程语言 > C语言/C++

嵌入式常见笔试题总结(3)

2016-10-22 13:11 351 查看
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]))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息