资源描述:
《嵌入式c笔试题目 microsoft word 文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式C开发人员的最好的0x10道笔试题约定:1)下面的测试题中,认为所有必须的头文件都已经正确的包含了2)数据类型 char一个字节1byte int两个字节2byte(16位系统,认为整型是2个字节) longint四个字节4byte float四个字节4byet double八个字节8byte longdouble十个字节10byte pointer两个字节2byte(注意,16位系统,地址总线只有16位)第1题:考查对volatile
2、关键字的认识#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
3、,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、第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]);}voidf
5、oo(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("%
6、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个函
7、数哪一个最可能引起指针方面的问题(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(){ i
8、nta; intb; p[0]=f1; p[1]=f2; a=3; b=5; p[0](&a,b); printf("%dt%dt",a,b); p[1](&a,b); printf("%dt%dt",a,b);}voidf1