嵌入式专业-大二下学期-暑期实践报告总结.doc_第1页
嵌入式专业-大二下学期-暑期实践报告总结.doc_第2页
嵌入式专业-大二下学期-暑期实践报告总结.doc_第3页
嵌入式专业-大二下学期-暑期实践报告总结.doc_第4页
嵌入式专业-大二下学期-暑期实践报告总结.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

暑期实践报告总结这个学期暑假,我们嵌入式软件的全体大二学生进入了实践阶段,与大一相比,我们这期又增加了实习流程。在老师们的辛勤教导下,我们在熟悉的机房中开始了对嵌入式专业的进一步深入学习。老师让我们从LINUX基础开始,虽然之前学过LINUX,但只是有一点了解,并没有真正的去接触。这次,我了解到了它与其他系统相比的优势,学习了LINUX的分区命名,常用命名,文本编译器Vi的使用,源代码的编译和调试,多模块的编译和链接以及管理工具。通过这些学习,我基本能够在LINUX的系统下通过Vi编译器编写C语言程序,通过一些常用命令来调试,查看并修改程序。能够加深印象,熟练操作。能够在那么短的时间内初步掌握LINUX,与在学校学习一门课程的意义完全不同,通过老师的讲解,自己的练习,同学间的交流。与此同时,重温了单向链表,链表常用操作的熟练度,常变量的定义,结构体的命名,哈希表的编程,强化了C语言编程。时间虽短,但同学间的探讨,师生间的互动以及精华般的训练,让我感觉无论是理论知识还是实践能力都得到了大幅度的提高。在这里把理论与实践相结合,相互促进,相互补充,使得学习更加透彻。通过用不同的方法实现同一个项目,不断深入,层层推进。下面我把最近所学的内容整理如下:一:LINUX的一些简单的命令(在Redhat下完成) Vim+文件名 后按enter键 如:Vim test123.c 按enter键 -第一次输入该命令是建立一个文件夹test123.c,并在该文件夹里编写程序(按i键,可以进入程序进行修改;按esc则退出程序); 二次以上输入该命令,并按i键,则是进入该文件夹下所编写的程序中,对该程序 的相关语句进行查找,修改,删除等操作,按esc则退出程序; 程序编辑好后,若保存并退出,则进行末行模式, 如:输入esc键(退出程序)输入命令 :wq(:表示转到程序末行,wq表示保存并退出) 若程序不想保存,则输入wq!表示不保存并退出原来程序; 对所编辑的程序进行运行,检测(该程序位于test,test.c下): gcc -o test test.c 查找上次所输入的命令(节约时间) gcc -o test test.c -wall 提示程序中所出现的所有警告 gcc -o test test.c -o 提高运行效率 gcc -o test test.c -g 将程序在gccF下进行编译 gdb一些命令的意义: gdb ./test 运行程序 gdb l 10 查找文件下程序的前十行,并显示出来 gdb b 8 在程序第八行设置断点 gdb r 指向断点位置执行(即在该断点处往下执行) gdb p sum 输出变量sum 的值 gdb n 程序一步一步执行 gdb c 继续往下执行 gdb q 退出程序 table -test(自动补齐) 代表当前用户的根目录二:Set的一些命令的用法 Set tabstop=4 Set shiftwidth=4 Set autoindent 自动缩进 Set nu 参数改变窗口大小程序模板的标准化要求 程序块间要有空行(每块的函数代表一种功能,各功能块要相互分开)(1234)int i; 定义变量时,开头要空4格 /程序要包含的基本内容 函数名称 功能 返回值 其他合并文件口令gcc -o test test.c fun.c/将test.c 和fun.c编译合并成一个文件testmain: test.o fun.o(table键)gcc -o main test.o fun.o/运行 main函数链接下的test.o 和fun.o下的程序 test.o:test.c gcc -c test.c/将test.c编译成test.ofun.o:fun.c gcc -c fun.c/将fun.c编译成fun.o三:(七月3号)C语言的几个重要部分【1】变量;【2】:语句【3】:分支;【4】:循环;【5】:函数;【6】:存取;【7】:类;【8】:封装,继承;与链表相比,数组的劣势为:删除某结点时,释放或前移的项数比较繁琐,并且在增加结点时,扩展空间较复杂;单向链表,其中(双向链表的(单环链表)居主),具体一个实例如下:#include #include #include struct nodeint num;char name16;struct node *next;int main()struct n1,n2,n3;struct node *p;struct node *h=NULL;n1.num=1;n2.num=2;n3.num=3;h=&n1;n1.next=NULL;n1.next=&n2; n2.next=&n3;n3.next=NULL;printf(link:n);for(p=h;p!=NULL;p=p-next)printf(%d,p-num);if(p-next!=NULL)printf(-);printf(n);注释:将该链表保存在一个link.c文件中,所用的相关指令有:Gcc -o link link.c 将程序保存在link.c文件中,调试,运行 ./link 当前目录下链接,运行在结构体变量中,模型如下:Struct node; 注意:末尾的大括号后一定要加分号调试程序时,若系统出现SIGSEGV的提示,则表示出现段错误,即访问内存错误;四:面试流程:1) 笔试(重要):主要分两部分:一:C语言的基础知识;二:数据结构(C语言的核心结构);2) C+主要是其封装,继承,多态的三个特性;3) 曾经做过的项目;4) 性格方面的分析;5) 面试人提出的一些问题(最后一个往往是他们最感兴趣的)6) 待遇;malloc:申明变量时,申请空间 形式为:p=malloc(sizeof(); 指针:占4个字节; free:内存释放函数 形式为:void free(void *p)链表的其中一个基本操作,创建新结点的程序如下:#include #include #include int main()Struct node *h=NULL;Struct node *p;char c;int i=1;void link_print(Struct node *h)struct node *p;for(p=h;p!=NULL;p=p-next)printf(%d%s,p-num,p-name);if(p-next!=NULL)printf(-);printf(n);for(;)/while(1)printf(Do you want create node(y/n):n);c=getchar();getchar();if(c=n)break;p=malloc(sizeof(Struct node);p-num=i+;Strcpy(p-name,Zhang san);p-next=h;h=p;Link_print(h);五:1)变量的定义程序:#define PI 3.14int main()int i=1;char c;float f;char *p=abc;long l;i=10;printf(i=%dn;i);printf(sizeof(int):%dn,sizeof(int);scanf(%d,&i);2) 编写一个程序,可以判断输入的年数是否为闰年分析:闰年的条件为:该年数能被4整除但不能被100整除或能被400整除程序如下:#include int main()int i;scanf(%d,&i);if(i%4=0&i%100!=0|i%400=0)printf(yes!n);elseprintf(no!n);return 0;六:简单的包含结构体变量的程序#include #include Struct stu /定义类型int num;char name16;int main()Struct stu s;Struct stu *p=&s;int *pi=NULL;int i;pi=&i; /pi=malloc(sizeof(int)*pi=10;printf(p=%xn,p);s.num=1;strcpy(,Zhang san);printf(num:%d name:%s,,s.num);复杂的包含结构体变量的程序#include #include #include Struct stu /定义类型int num;char name16;int s;int main( )Struct stu stu_arry10;int i;int max;for(i=0;i10;i+)printf(Please input student data:n);scanf(%d %s %d,&(stu_arryi.num),stu_,&(stu_arryi.s);max=0;for(i=0;i10;i+)if(stu_arrymax.sstu_arryi.s)max=i;for(i=0;i10;i+)printf(%d %s %d,stu_arryi.num,stu_,stu_arryi.s);printf(n);printf(max score is:%d %s %dn,stu_arrymax.num,stu_,stu_arrymax.s);七:链表:进一步熟悉链表的几种基本的操作运算输出某一结点#include #include #include Struct node /定义类型int num;char name16;Struct node *next;Struct node *link_create() Struct node *h=NULL; Struct node *p=NULL; char c;for(;)setbuf(stdin,NULL);printf(Do you want to input data:n);c=getchar();getchar()if(c=n)break;p=malloc(sizeof(Struct node);scanf(%d,&(p-num);scanf(%s,p-name);p-next=h;/*add node into link*/h=p;return h;void link_print(Struct node *h) Struct node *p;for(p=h;p!=NULL;p=p-next)printf(|%d %s|,p-num,p-name);/getchar()if(p-next!=NULL)printf(-);printf(n);int main()Struct node *h=NULL;h=link_create();link_print(h);return 0;利用某一结点的位置号,查找该结点(部分程序)Struct node *link_find_by_num(Struct node *h,int num) Struct node *p;for(p=h;p!=NULL;p=p-next)if(p-num=num)/找到该结点return p;return NULL;在链表的尾结点插入新结点,(部分程序)Struct link_add_node_tail(Struct node *h,int num,char *name) Struct node *p; Struct node *pp; /*get tail node*/for(p=h;p!=NULL;p=p-next)if(p-next=NULL)pp=p; /*add node into tail*/p=malloc(sizeof(Struct node);p-num=num;strcpy(p-name,name);pp-next=p;p-next=NULL;通过num查找到某一结点,并将其删除(部分程序)Struct node *link_node_del_by_num(Struct node *h,int num) Struct node *p; Struct node *pp;for(pp=p=h;p!=NULL;pp=p;p=p-next)if(p-num=num)break;pp=p; if(p=NULL) return h; if(p=h) h=h-next; free(p); else/*add node is not head node*/ pp-next=p-next; free(p);return h;八:哈希表:又称散列表,其具体程序如下:#include#include#include#define HASH_MAX 10struct nodeint num;struct node *next;struct node *hashHASH_MAX;void hash_init(struct node *hash)int i;for(i=0;inum=add_data;p-next=hashpos;hashpos=p;return 0;void hash_print(struct node *hash)int i;int pos;struct node *p;for(i=0;inext)printf(%d ,p-num);if(p-next!=NULL)printf(-);printf(n);struct node *hash_find(struct node *hash,int f_num)int pos;struct node *p;pos=hash_hash_fun(f_num);for(p=hashpos;p!=NULL;p=p-next)if(p-num=f_num)return p;return NULL;void hash_del(struct node *hash,int d_num)int pos;struct node *p,*pp;pos=hash_hash_fun(d_num);for(pp=p=hashpos;p!=NULL;pp=p,p=p-next)if(p-num=d_num)break;if(p=hashpos)hashpos=hashpos-next;free(p);elsepp-next=p-next;free(p);int main()hash_init(hash);hash_add_node(hash,106);hash_add_node(hash,129);hash_add_node(hash,115);hash_add_node(hash,14);hash_add_node(hash,15);hash_print(hash);struct node *p;int pos;p=hash_find(hash,14);if(p!=NULL)printf(Find:%dlinen,hash_hash_fun(114);elseprintf(Not find!n);hash_del(hash,15); hash_print(hash);九:简易的电子词典程序设计#include#include#include/#includechar *word_temp20;/为所输入字符与字符串相比较时,所选中的字符串所暂存的空间char *word100=adopt,about,arm,like,love,word; /实际存放的个数 void display();/输出所选择的字符串void translate();/将所输入的字符与数组内的字符串相匹配/*输出所选择的字符串*/void display()int k_temp;/定义变量,为暂存空间时记入存入字符串的个数,初始值为0for(k_temp=0;word_tempk_temp;k_temp+)printf(%d : %s ,k_temp,word_tempk_temp);/输出所匹配的字符串printf(n);/退出/*查找在数组内的字符串与所输入的字节匹配*/void translate()int i,post=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论