




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式软件笔试TOC o 1-5 h z/2#2#2#2#2#2#V卜VVrjJwVChapterl语法类2#2#2#2#/rjwrrwrfwrywrjw%rjwrjwrjrjw%rjrjw%rjw/1.volatile作用?应用场合举3例volatile修饰的变量表示这个变量可能会被意想不到的改变,对该变量的操作将不作优化,用到该变量时都从这个变量的原始地址读取,而不是用保存在寄存器里的备份。Volatile常用在:.硕件寄存器(如:状态寄存器)。.中断程序中会访问到的非自动变量(Non-autoniaticvariables)。.多线程应用中几个任务共享的变量2.一个参数既可以是const
2、还可以是volatile吗?解释为什么。是的。比如只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。3个指针可以是volatile吗?解释为什么。是的。比如一个中断服务子程序修该一个指向一个buffer的指针时。4.用变量a给出下面的定义a)个整型数b)个指向整型数的指针c)一个指向指针的指针,它指向的指针是指向一个整型数d)个有10个整型数的数组e)个有10个指针的数组,该指针是指向一个整型数的f)一个指向有10个整型数数组的指针g)个指向函数的指针,该函数有一个整型参数并返回一个整型数h)个有10个指针的数组,该指针指向一个函数,该
3、函数有一个整型参数并返回一个整型数inta;/Anintegerint*a;/Apointertoanintegerint*a;/Apointertoapointertoanintegerinta10;/Anarrayof10integersint*(a10);/Anarrayof10pointerstointegersint(*a)10;/Apointertoanarrayof10integersint(*a)(int);/Apointertoafunctionathattakesanintegerargumentandreturnsanintegerint(*a10)(int);/Anar
4、rayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger5什么是存储机制里的大、小端模式?试举例说明人端模式(big-edian):MSE存放在最低端的地址上。举例,双字节数0 x1234以big-endian的方式存在起始地址0 x00002000中:|data|address|0 xl2|-0 x00002000|0 x34|-0 x00002001在Big-Endian中,对于bit序列中的序号编排方式如下(以双字节数0 x8B8A为例):bit|01234567|89101112131415MSBLSBv
5、al|10001011|10001010|=0 x8B8A小端模式(little-endian):LSE存放在最低端的地址上。举例,双字节数0 x1234以httle-enduui的方式存在起始地址0 x00002000中:|data|address|0 x34|-0 x00002000|0 xl2|-0 x00002001在Little-Endian中,对于bit序列中的序号编排和Big-Endiaii刚好相反,其方式如下(以双字节数0 x8B8A为例):bit|15141312111098|76543210MSBLSBval|10001011|10001010|=0 x8B8A写一段用来判
6、断内存存储方式是大端还是小段的代码。联合体umon的存放顺序是所有成员都从低地址开始存放,利用该特性就可以轻松地获得了CPU对内存采用Little-endiaii还是Big-endian模式读写。代码如下:mtcheckCPUendianQunionunsignedmta;unsignedcharb;c;c.a=1;return(c.b=1);/*remin1:little-endian,returnO:big-endian*/定义一个返回值是指向函数的指针且有一个指向函数的指针作参数的函数。通用形式如下:typedefint(*P)();/定义一个函数指针P类型Pftinction(mt(*
7、p)();/定义一个函数返回值P类型,且定义一个指向函数的指针p作参数用预处理指define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#defuieSECONDS_PER_YEAR(60*60*24*365)UL/UL怎么个用法?你暂不要加写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。特defineMIN(A.B)(A)6)?puts(H6J:puts(M6,原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。-20成了一个非常人的正数。此题的输出确实是这样,但单纯输出a+b时结果又是-14很怪异迷惑!16.评价下面的代码片断:unsigne
8、dintzero=0;unsignedintcompzero=OxFFFF:如呆碰巧int型是16位则上述代码没有问题,否则上面的代码不正确。应写成:unsignedintcompzero=0;17下面代码执行后a,b,c的值各是多少?inta=5,b=7,c;c=a+b;/c=(a+)+ba=6,b=7,c=12./吾已试,结果确如此Typedef和#define的区别define在预编译的时候处理作机械的字符替换。Typedef在编译的时候处理,并不是作简单的字符替换。而是如同定义变量一样声明一个类型。然后用它去定义这种类型的变量。比如下面的例子:#defiiiedPSstructs*ty
9、pedefstmcts*tPS;以上两句都是定义dPS和tPS为一个指向结构s的指针。typedef更好。比如:dPSpl,p2;tPSp3,p4;第一句扩展为structs*pl,p2;这条代码定义pl为指向结构的指针,p2为一个实际的结构体。第二句定义p3和p4为指向结构体s的指针。/aVrtw$、$、VChapter2编程类rjwrjwrjwrjrjwrjwrjw$、rjwrjw$、rjwrjwrjw$、rjwrjw$、$、rjwrjwJ在字符串中找出所有与给定字符相同字符的位置。Sincludechars6=hello;voidsearch_char(chargiven)(inti二0
10、,j二0;while(si-0?)if(si=given)printf(location=%dn,i);j+;i+;if(j=O)printf(,zNo%cfoundn/z,given);intmain(void)(search_char(o);return0;/*E*/将一个字符串自身逆序.SincludeSdefineLEX12intmain(void)(intm,i;chartemp;charsLEM二hellotiger;m二(LENT)/2;printf($sn,s);for(i=0;im;i+)temp二si;si二sLEN-2-i;sLEN-2-i二temp;printf(“$s
11、n,s);return0;/*E*/链表的基本操作及链表自身逆序。/*chainoperatefromDataStrueture*/SincludeSincludeSincludetypedefintDataType;typedefstructNode(DataTypedata;struetNode*next;SLNode;/initiatevoidListInitiate(SLNode*head)exit(l);if(*head=(SLNode*)malloc(sizeof(SLNode)=NULL)elseprintfC,0Kn,z);(*head)-next=NULL;/lengthca
12、lintListLngth(SLNode*head)(SLNode*p=head;intsiz己二0;whi.le(pnext!二NULL)p二p_next;size+;returnsize;/insertanodeintListlnsert(SLNode*head,inti,DataTypex)(SLNode*p,*q;intj;p二head;j二T;while(p-next!二NULL)&(j(i-l)p=pnext;j+;辻(j!二(i-l)printf(Positionerrornz,);return0;辻(q二(SLNode*)malloc(sizeof(SLNode)二二NULL)
13、exit(1);q-data=x;q-next二pnext;p_next二q;return1;/deleteanodeintListDlete(SLNode*head,inti,DataType*x)SLNode*p,*s;intj;p二head;j二T;while(pnext!=NULL)&(p-next-next!二NULL)&)p二p_next;j+;if(j!=i-l)printf(z,Positionerrornz/);return0;s=p-next;*x=sdata;p-next=pnextnext;free(s);return1;/datagetintListGt(SLNode
14、*head,inti,DstaType*x)SLNode*p;intj;p二head;j二T;while(pnext!二NULL)&(ji)p二p_next;j+;辻(j!二i)printf(Positionerrornz/);return0;*x=p-data;return1;/stroyachainvoidDestroy(SLNode*head)SLNode*p,*pl;p二*head;while(p!=NULL)pl=P;p二p_next;free(pl);*head二NULL;/converseachainvoidconverse(SLNode*head)SLNode*p,*q;p=h
15、eadnext;head一next二NULL;while(p!=NULL)q二P;p=pnext;qnext二headnext;headnext二q;/compositeoperationintmain(void)(SLNode*head;inti,x;Listlnitiate(&head);for(i=0;i10;i+)if(Listlnsert(head,i,i)二二0)printf(Errorn,z);return1;if(ListDelete(head,0,&x)=0)/chain,position,dataaddressprintf(Errorn);return1;if(Listin
16、sert(head,0,100)=0)printf(Errorn);return1;converse(head);for(i=0;iListLength(head);i+)if(ListGet(head,i,&x)=0)/chain,position,dataaddressprintf(,zErrornz,);return1;elseprintfC%d,x);printf(*n*);Destroy(&head);return0;/*E*/写一个二分査找算法。Sinclude#definesize10intgsize=0,1,2,3,4,5,6,7,8,9;intsearch(intx)(int
17、low=0;inthigh二sizeT;intmid;while(low=high)mid(low+high)/2;if(gmid=x)returnmid;elseif(gmidx)high二mid-1;return一1;intmain(void)(printfsearch(7);return0;/*E*/5.计算一个字节里(byte)里面有多少bit被置1.Sincludeintcal_bit(chara)(inti,j二0;for(i=0;i8;i+)if(a&0 x01)=0 x01)j+;a=al;returnj;/_intmain(void)(printf($dn,cal_bit(2
18、55);zturn0;/*E*/字符串转换为整数,比如“1234”转换成1234.Sincludecharstr6=12345;intstring_to_int(chars)(inti;intsum二0;for(i=0;si!=0;i+)sum二sum*10+si-0;returnsum;/intmain(void)(printf(,z%dn/z,string_to_int(str);zturn0;/*e*/整数转换为字符串,比如1234转换成234”.SincludeSincludeSdefineLEX4charstr二“;char*int_to_string(intgiven)(inti;
19、inttemp;bothsideoffor(i=0;iLEN;i+)temp=given/pow(10,LEN-l-i);/从最高位开始given=given%(int)pow(10,LENT-i);/intmustbestri=temp+,O;returnstr;/intmain(void)(printf(”sn,int_to_string(9876);return0;/*e*/C语言实现插入排序算法(从大到小,从小到大)#includeSdefineLEN5intaLEN二7,4,8,4,5;voidinsertion_sort(void)inti,j,key;for(j=l;j=0)&(
20、aikey)/aikey从小到大;aikey从大到小ai+l=ai;i;ai+l=key;printf(z,%d,%d,%d,%d,%dn,a0,al,a2,a3,a4);/intmain(void)insertion_sort();return0;/*E*/9C语言实现冒泡排序算法(从大到小,从小到大)#includeSdefineLEN5intaLEN=5,4,3,2,1;voidbubble_sort(void)inti,j,flag二1;inttemp;for(i=l;(iLEN)&(flag=l);i+)flag=0;for(j=0;jaj+l)/ajaj+l从小到大;ajaj+l从犬到小flagFl;temp二aj;aj二aj+l;aj+l二temp;printf(,z%d,%d,%d,%d,%dn,a0,al,a2,a3,a4);/intmain(void)bubble_sort();return0;/*E*/在一个字符串中找一个字符串计算一个数的阶乘递归实现:intfactorial(intn)if(n=0)return1;elseintrecurse=factorial(n-1);intresult=n*recurse;returnresult;循环实现:intfactorial(intn)intresult=1;wh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版二手房屋买卖合同变更协议
- 丝网合同标准文本制作
- 新员工试岗协议书正规范例二零二五年
- 二零二五电影导演聘用合同
- 商铺租赁合同汇编二零二五年
- 仓储返利合同样本
- 内控评价咨询合同模板二零二五年
- 乡村少年宫辅导员考核细则
- 二零二五车辆抵押担保合同
- 2025年空间环境艺术设计项目合作计划书
- Unit 2 Go for it!Understanding ideas教学设计 -2024-2025学年外研版(2024)七年级英语下册
- 浙江省金丽衢十二校2025届高三下学期二模试题 地理 含解析
- 【+初中语文+】《山地回忆》课件+统编版语文七年级下册
- 2025-2030中国建筑装饰行业十四五发展分析及投资前景与战略规划研究报告
- (一模)2025年广东省高三高考模拟测试 (一) 语文试卷语文试卷(含官方答案)
- 管理学基础-形考任务一-国开-参考资料
- 3.3 服务业区位因素及其变化-以霸王茶姬为例【知识精研】同步教学课件(人教2019必修第二册)
- 三维网喷播植草施工方案
- 2024年员工知识产权与保密协议范本:企业知识产权保护实务3篇
- JGJ46-2024 建筑与市政工程施工现场临时用电安全技术标准
- GB 17790-2008家用和类似用途空调器安装规范
评论
0/150
提交评论