嵌入式C笔试题目 Microsoft Word 文档Word格式.docx
- 文档编号:15754370
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:64
- 大小:52.35KB
嵌入式C笔试题目 Microsoft Word 文档Word格式.docx
《嵌入式C笔试题目 Microsoft Word 文档Word格式.docx》由会员分享,可在线阅读,更多相关《嵌入式C笔试题目 Microsoft Word 文档Word格式.docx(64页珍藏版)》请在冰豆网上搜索。
exit(0);
}
b=5;
longjmp(buf,1);
}请问,这段程序的输出是
(a)3
(b)5
(c)0
(d)以上均不是
第2题:
考查类型转换
main(){
structnode
inta;
intc;
};
s={3,5,6};
structnode*pt=&
s;
%d"
*(int*)pt);
}这段程序的输出是:
(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次幂)
第4题:
考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人
main(){
int
a[5]={1,2,3,4,5};
int*ptr=
(int*)(&
a+1);
%d%d"
*(a+1),*(ptr-1));
(a)22
(b)21
(c)25
第5题:
考查多维数组与指针
voidfoo(int[][3]);
main(){
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};
foo(a);
a[2][1]);
}voidfoo(intb[][3])
++b;
b[1][1]=9;
(a)8
(b)9
(c)7
(d)以上均不对
第6题目:
考查逗号表达式
inta,b,c,d;
a=3;
c=a,b;
d=(a,b);
c=%d"
c);
d=%d"
d);
(a)c=3d=3
(b)c=5d=3
(c)c=3d=5
(d)c=5d=5
第7题:
考查指针数组
inta[][3]={1,2,3,4,5,6};
int(*ptr)[3]=a;
%d%d"
(*ptr)[1],(*ptr)[2]);
++ptr;
(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));
}上面这3个函数哪一个最可能引起指针方面的问题
(a)只有f3
(b)只有f1andf3
(c)只有f1andf2
(d)f1,f2,f3
第9题:
考查自加操作(++)
inti=3;
intj;
j=sizeof(++i+++i);
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);
p[0]=f1;
p[1]=f2;
p[0](&
a,b);
%d\t%d\t"
a,b);
p[1](&
}voidf1(int*p,intq){
inttmp;
tmp=*p;
*p=q;
q=tmp;
}voidf2(int*p,intq){
(a)5555
(b)3535
(c)5353
(d)3333
第11题:
考查自减操作(--)
voide(int);
e(a);
}voide(intn){
if(n>
e(--n);
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题:
数组与指针的区别与联系
charp;
charbuf[10]={1,2,3,4,5,6,9,8};
p=(buf+1)[5];
p);
(a)5
(b)6
(c)9
(d)以上都不对
第14题:
考查指针数组的指针
Voidf(char**);
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()那样,这个话题一般国内大学课堂是不会讲到的,不会也情有可原呵呵,
stdarg.h>
intripple(int,...);
intnum;
num=ripple(3,5,7);
%d"
num);
}intripple(intn,...){
inti,j;
intk;
va_listp;
k=0;
j=1;
va_start(p,n);
for(;
j<
n;
++j)
i=
va_arg(p,int);
i;
i&
=i-1
)
++k;
returnk;
(a)7
(c)5
(d)3
第16题:
考查静态变量的知识
intcounter(inti){
staticintcount=0;
count=count+i;
return(count);
}main(){
for(i=0;
i<
=5;
i++)
j=counter(i);
}本程序执行到最后,j的值是:
(a)10
(b)15
详细参考答案
(b)
volatile字面意思是易于挥发的。
这个关键字来描述一个变量时,意味着给该变量赋值(写入)之后,马上再读取,写入的值与读取的值可能不一样,所以说它"
容易挥发"
的。
这是因为这个变量可能一个寄存器,直接与外部设备相连,你写入之后,该寄存器也有可能被外部设备的写操作所改变;
或者,该变量被一个中断程序,或另一个进程
改变了.
volatile不会被编译器优化影响,在longjump后,它的值是后面假定的变量值,b最后的值是5,所以5被打印出来.
setjmp:
设置非局部跳转
Storescontextinformationsuchasregistervaluessothatthelomgjmpfunctioncanreturncontroltothestatementfollowingtheonecallingsetjmp.Returns0whenitisinitiallycalled.
Lonjjmp:
执行一个非局部跳转
Transferscontroltothestatementwherethecalltosetjmp(whichinitializedbuf)wasmade.Executioncontinuesatthispointasiflongjmpcannotreturnthevalue0.Anonvolatileautomaticvariablemightbechangedbyacalltolongjmp.Whenyouuses
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式C笔试题目 Microsoft Word 文档 嵌入式 笔试 题目