嵌入式C笔试题目 Microsoft Word 文档.docx

上传人:b****5 文档编号:2843309 上传时间:2022-11-15 格式:DOCX 页数:64 大小:52.35KB
下载 相关 举报
嵌入式C笔试题目 Microsoft Word 文档.docx_第1页
第1页 / 共64页
嵌入式C笔试题目 Microsoft Word 文档.docx_第2页
第2页 / 共64页
嵌入式C笔试题目 Microsoft Word 文档.docx_第3页
第3页 / 共64页
嵌入式C笔试题目 Microsoft Word 文档.docx_第4页
第4页 / 共64页
嵌入式C笔试题目 Microsoft Word 文档.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

嵌入式C笔试题目 Microsoft Word 文档.docx

《嵌入式C笔试题目 Microsoft Word 文档.docx》由会员分享,可在线阅读,更多相关《嵌入式C笔试题目 Microsoft Word 文档.docx(64页珍藏版)》请在冰豆网上搜索。

嵌入式C笔试题目 Microsoft Word 文档.docx

嵌入式C笔试题目MicrosoftWord文档

嵌入式C开发人员的最好的0x10道笔试题

约定:

1)下面的测试题中,认为所有必须的头文件都已经正确的包含了

2)数据类型    

       char一个字节1byte

       int两个字节2byte(16位系统,认为整型是2个字节)

       longint四个字节4byte

       float四个字节4byet

       double八个字节8byte

       longdouble十个字节10byte

       pointer两个字节2byte(注意,16位系统,地址总线只有16位)

第1题:

考查对volatile关键字的认识

#includestaticjmp_buf buf;main()   { volatile intb; 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(){  structnode   {    inta;    intb;    intc;       };  structnode s={3,5,6};  structnode*pt=&s;  printf("%d", *(int*)pt);}这段程序的输出是:

(a)3

(b)5

(c)6

(d)7

第3题:

考查递归调用

int foo(intx,int n) { intval; val=1;   if(n>0)  {   if(n%2==1) val=val*x;       val=val*foo(x*x,n/2); } returnval;}这段代码对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)22

(b)21

(c)25

(d)以上均不是

第5题:

考查多维数组与指针

voidfoo(int[][3]);    main(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}}; foo(a); printf("%d",a[2][1]);}voidfoo(intb[][3])  { ++b; b[1][1]=9;}这段程序的输出是:

(a)8

(b)9

(c)7

(d)以上均不对

第6题目:

考查逗号表达式

main(){ inta,b,c,d; a=3; b=5; c=a,b; d=(a,b); printf("c=%d",c); printf("d=%d",d);}这段程序的输出是:

(a)c=3d=3

(b)c=5d=3

(c)c=3d=5

(d)c=5d=5

第7题:

考查指针数组

main(){ inta[][3]={1,2,3,4,5,6}; int(*ptr)[3]=a; printf("%d%d" ,(*ptr)[1],(*ptr)[2]); ++ptr; printf("%d%d" ,(*ptr)[1],(*ptr)[2]);}这段程序的输出是:

(a)2356

(b)2345

(c)4500

(d)以上均不对

第8题:

考查函数指针

int*f1(void){ intx=10; return(&x);}int*f2(void){ int*ptr; *ptr=10; returnptr;}int*f3(void){ int*ptr; ptr=(int*)malloc(sizeof(int)); returnptr;}上面这3个函数哪一个最可能引起指针方面的问题

(a)只有f3

(b)只有f1andf3

(c)只有f1andf2

(d)f1,f2,f3

第9题:

考查自加操作(++)

main(){ inti=3; intj; j=sizeof(++i+++i); printf("i=%dj=%d",i,j);}这段程序的输出是:

(a)i=4j=2

(b)i=3j=2

(c)i=3j=4

(d)i=3j=6

第10题:

考查形式参数,实际参数,指针和数组

voidf1(int*,int);voidf2(int*,int);void(*p[2])(int*,int);main(){ inta; intb; p[0]=f1; p[1]=f2; a=3; b=5; p[0](&a,b); printf("%d\t%d\t",a,b); p[1](&a,b); printf("%d\t%d\t",a,b);}voidf1(int*p,intq){ inttmp; tmp=*p; *p=q; q=tmp;}voidf2(int*p,intq){ inttmp; tmp=*p; *p=q; q=tmp;}这段程序的输出是:

(a)5555

(b)3535

(c)5353

(d)3333

第11题:

考查自减操作(--)

voide(int);  main(){ inta; a=3; e(a);}voide(intn){ if(n>0) {   e(--n);   printf("%d",n);   e(--n); }}这段程序的输出是:

(a)0120

(b)0121

(c)1201

(d)0211

第12题:

考查typedef类型定义,函数指针

typedefint(*test)(float*,float*)testtmp;tmp的类型是

(a)函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)

     Pointertofunctionofhavingtwoargumentsthatispointertofloat

(b)整型

(c)函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型

     Pointertofunctionhavingtwoargumentthatispointertofloatandreturnint

(d)以上都不是

第13题:

数组与指针的区别与联系

main(){ charp; charbuf[10]={1,2,3,4,5,6,9,8}; p=(buf+1)[5]; printf("%d",p);}这段程序的输出是:

(a)5

(b)6

(c)9

(d)以上都不对

第14题:

考查指针数组的指针

Voidf(char**);main(){ char*argv[]={"ab","cd","ef","gh","ij","kl"}; f(argv);}voidf(char**p){ char*t; t=(p+=sizeof(int))[-1]; printf("%s",t);}这段程序的输出是:

(a)ab

(b)cd

(c)ef

(d)gh

第15题:

此题考查的是C的变长参数,就像标准函数库里printf()那样,这个话题一般国内大学课堂是不会讲到的,不会也情有可原呵呵,

#includeintripple(int,...);main(){ intnum; num=ripple(3,5,7); printf("%d",num);}intripple(intn,...){ inti,j; intk;   va_listp; k=0; j=1; va_start(p,n);      for(;j

(a)7

(b)6

(c)5

(d)3

第16题:

考查静态变量的知识

intcounter(inti){ staticintcount=0; count=count+i; return(count);}main(){ inti,j; for(i=0;i<=5;i++)   j=counter(i);}本程序执行到最后,j的值是:

(a)10

(b)15

(c)6

(d)7

 

 

 

详细参考答案

第1题:

  (b)

volatile字面意思是易于挥发的。

这个关键字来描述一个变量时,意味着给该变量赋值(写入)之后,马上再读取,写入的值与读取的值可能不一样,所以说它"容易挥发"的。

这是因为这个变量可能一个寄存器,直接与外部设备相连,你写入之后,该寄存器也有可能被外部设备的写操作所改变;或者,该变量被一个中断程序,或另一个进程

改变了.

volatile不会被编译器优化影响,在longjump后,它的值是后面假定的变量值,b最后的值是5,所以5被打印出来.

setjmp:

设置非局部跳转

Storescontextinformationsuchasregistervaluessothatthelomgjmpfunctioncanreturncontroltothestatementfollowingtheonecallingsetjmp.Returns0whenitisinitiallycalled.

Lonjjmp:

执行一个非局部跳转

Transferscontroltothestatementwherethecalltosetjmp(whichinitializedbuf)wasmade.Executioncontinuesatthispointasiflongjmpcannotreturnthevalue0.Anonvolatileautomaticvariablemightbechangedbyacalltolongjmp.Whenyouuses

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1