嵌入式软件工程师笔试题_.doc
《嵌入式软件工程师笔试题_.doc》由会员分享,可在线阅读,更多相关《嵌入式软件工程师笔试题_.doc(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、/6*/构造N个结点的单链表返回链表头指针,要求链表中各结点顺序/与结点数据输入顺序相反,例如输入1,2,3,4,5,形成的链表为/head-5 4 3 2 1 ,补充程序#define N 10typedef struct Nodeint data;struct Node*next;NODE;int Get_Data(int i);/定义省略Node*Create_u()int i;NODE*p,*Head=NULL;for(i=0;iData=Get_Data(i);_ p-next = Head-next;_ Head =p _;return Head;/7*/N个结点链表,每个结点中存
2、放一个字符,判断链表存放的字符是否/中心对称,即a b c c b a或a b c b a,补充程序typedef struct Nodeint data;struct Node*next;NODE;bool Is_symmeic(NODE*head,*int n)char DN;int i,d;_d=n/2 _;for(i=0;idata;head=head-next;if(_head!=NULL&_ 1=n%2_)head=head-next;while(head)_ -i _;if(Di!=head-data)return false;head=head-next;return true
3、;/8*/str中只含有大写和小写字母函数change_move(char*str)将字符串中大写改成*并/移到前面小写后返回*的个数/如AabBdcYY改为*abd,返回5int chang_move(char*str)int len,i,curstr=-1;len=strlen(str);for(i=len-1;i=0;i-)if(stri=A&strii)_;stri=*;_;return_;/9*/求两个字符串的第一个公共子串,并返回该子串/如:a b c d e f g e h i a a c d e f * * g e h i/第一个为c d e f;不许用strcmp()char
4、*Maxf(char*str1,char*str2)3.二维数组空间的动态申请 a.简单的,已经有一维,如 char (*c)5;c=new charn5;/n为已定义的行数b.二维的int *p;p=new int*m_row;/创建行指针for(int i=0;im_row;i+)/为每一行分配空间 pi=new intm_cols;写到某一个函数中:void getmemory(int * &p,int m_row,int m_cols) p=new int*m_row;/创建行指针for(int i=0;im_row;i+)/为每一行分配空间 pi=new intm_cols;释放空间
5、:void deletememory(int *&p,int m_row) /释放每一行所分配的空间 for(int i=0;im_row;i+) delete xi;/释放行指针 delete x; x=0;via嵌入式笔试两题 -|yingwang294 发表于 2006-10-31 10:40:00 以下是威盛嵌入式笔试的最后两道小题题一:原题如下:改程序,并确定运行结果i nclude i nclude i nclude char *getstring(void) char p=hello everyone; return p;char *getmemory(void) return
6、(char *)malloc(10);int main(int argc, char* argv) char *p=getmemory(); strcpy(p,helloworld); printf(%s,p); printf(%s,getstring(); return 0;这个主要是char p前少一个static.题二:读程序,写出运行结果i nclude i nclude i nclude i nclude typedef struct int value; char type;head_t;这是什么东西啊?typedef struct head_t head; int para;me
7、ssage_t;void main(void) message_t *message=NULL; head_t *head=NULL; message=(message_t *)malloc(sizeof(message_t); assert(message);/测试的条件不成立则终止程序 memset(message,0,sizeof(message_t); message-para=100; message-head.type=a; head=(head_t *)message; head-value+; head-type+;printf(message-head.value=%d,me
8、ssage-head.type=%c,message-para=%dn,message-head.value,message-head.type,message-para); free(message); return;#include #include using namespace std; class Student public: Student() Student( const string& nm, int sc = 0 ) : name( nm ), score( sc ) void set_student( const string& nm, int sc = 0 ) name
9、 = nm; score = sc; const string& get_name() const return name; int get_score() const return score; private: string name; int score; ; / output students name and score void output_student( const Student& student ) cout student.get_name() t; cout student.get_score() endl; int main() Student stu( Wang,
10、 85 ); output_student( stu ); 设 计了一个类 Student,数据成员有 name 和 score,有两个构造函数,有一个设置成员数据函数 set_student(),各有一个取得 name 和 score 的函数 get_name() 和 get_score()。请注意 get_name() 和 get_score() 后面都加了 const,而 set_student() 后面没有(也不能有const)。首先说一点题外话,为什么 get_name() 前面也加 const。如果没有前后两个 const 的话,get_name() 返回的是对私有数据成员 nam
11、e 的引用,所以通过这个引用可以改变私有成员 name 的值,如 Student stu( Wang, 85 );stu.get_name() = Li;即把 name 由原来的 Wang 变成了 Li,而这不是我们希望的发生的。所以在 get_name() 前面加 const 避免这种情况的发生。那么,get_name() 和 get_score() 这两个后面应该加 const的成员函数,如果没有 const 修饰的话可不可以呢?回答是可以!但是这样做的代价是:const对象将不能再调用这两个非const成员函数了。如const string& get_name(); / 这两个函数都应该
12、设成 const 型int get_score();void output_student( const Student& student ) cout student.get_name() t; / 如果 get_name() 和 get_score() 是非const成员函数,这一句和下一句调用是错误的cout student.get_score() endl; 由 于参数student表示的是一个对const Student型对象的引用,所以 student 不能调用非const成员函数如 set_student()。如果 get_name() 和 get_score() 成员函数也变成
13、非const型,那么上面的 student.get_name() 和 student.get_score() 的使用就是非法的,这样就会给我们处理问题造成困难。因此,我们没有理由反对使用const,该加const时就应该加上const,这样使成员函数除了非const的对象之外,const对象也能够调用它。c/C+ 通用 Makefile 本文提供了一个用于对 C/C+ 程序进行编译和连接以产生可执行程序的通用 Makefile。 在使用 Makefile 之前,只需对它进行一些简单的设置即可;而且一经设置,即使以后对源程序文件有所增减一般也不再需要改动 Makefile。因此,即便是一个没有学
14、习过 Makefile 书写规则的人,也可以为自己的 C/C+ 程序快速建立一个可工作的 Makefile。这个 Makefile 可以在 GNU Make 和 GCC 编译器下正常工作。但是不能保证对于其它版本的 Make 和编译器也能正常工作。 如果你发现了本文中的错误,或者对本文有什么感想或建议,可通过 whyglinux AT hotmail DOT com 邮箱和作者联系。 此 Makefile 的使用方法如下: 1. 程序目录的组织 尽量将自己的源程序集中在一个目录中,并且把 Makefile 和源程序放在一起,这样用起来比较方便。当然,也可以将源程序分类存放在不同的目录中。 在程
15、序目录中创建一个名为 Makefile 的文本文件,将后面列出的 Makefile 的内容复制到这个文件中。(注意:在复制的过程中,Makfile 中各命令前面的 Tab 字符有可能被转换成若干个空格。这种情况下需要把 Makefile 命令前面的这些空格替换为一个 Tab。) 将当前工作目录切换到 Makefile 所在的目录。目前,这个 Makefile 只支持在当前目录中的调用,不支持当前目录和 Makefile 所在的路径不是同一目录的情况。 2. 指定可执行文件 程序编译和连接成功后产生的可执行文件在 Makefile 中的 PROGRAM 变量中设定。这一项不能为空。为自己程序的可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 软件工程师 笔试
限制150内