《嵌入式C语言开发技解析》由会员分享,可在线阅读,更多相关《嵌入式C语言开发技解析(13页珍藏版)》请在金锄头文库上搜索。
1、目 录实验一 Linux编程环境实验(4学时)1实验二 循环程序设计(2学时)4实验三 分支程序设计(2学时)5实验四 函数实验(2学时)6实验五 指针实验(2学时)7实验六 Linux常见数据结构实验(2学时)8实验七 文件读写实验(2学时)9实验八 多线程实验(2学时)10实验九 网络编程实验(2学时)11实验十 Linux应用程序的编写(4学时)12实验一 Linux编程环境实验(4学时)实验目的:1 掌握Linux操作系统的基本命令,能对文件、文件夹进行相应的操作;2 熟练掌握Linux下编辑器的使用;3 学会使用编译器GCC对源程序进行编译;4 掌握调试程序GDB的使用以及调试过程;
2、实验内容:1 Linux常用命令;1) 以root账号登陆Linux系统,创建新用户:student2) 更改该用户密码为:1234563) 切换到student账户4) 查看用户主目录(/home/student)下的目录、文件信息5) 创建新目录/home/student/source6) 查看source的属性,并重新设置其权限为7777) 查看/usr/include目录下所有后缀为.h的文件,并将它们都复制到/home/student/souce目录下8) 在用户主目录下创建新目录destination,并设置其权限为7779) 将source目录下的文件都移动到destinatio
3、n目录下10) 删除destination目录下的所有文件11) 用man命令查看rename的使用手册(还有哪些方法可以获得命令帮助?)12) 重命名source目录为haha13) 删除haha目录和destination目录2 Vi编辑器的使用;熟练完成vimtutor中的练习;(写完成以后的体会,字数不限!)3 GCC编译器的使用;1) 用gcc带不同参数编译下列C程序,并观察每次的运行结果。#include int main(void)printf(“hello linux!n”);return 0;2) 用编辑器创建main.c, compute.c, input.c, compu
4、te.h, input.h和main.h文件。下面是它们的内容。注意compute.h和input.h文件仅包含了compute和input函数的声明但是没有定义。定义部分在compute.c和input.c文件中。main.c包含的是两条显示给用户的提示信息。$cat compute.h/*compute函数的声明原形*/double compute(double, double);$cat input.h/*input 函数的声明原形*/double input(char *);$cat main.h/*声明用户提示*/#define PROMPT1 请输入x的值:#define PROM
5、PT2 请输入y的值:$cat compute.c#include #include #include compute.hdouble compute(double x, double y)return(pow(double)x, (double)y);$cat input.c#include #include input.hdouble input(char *s)float x;printf(%s, s);scanf(%f, &x);return(x);$cat main.c#include #include main.h#include compute.h#include input.h
6、int main(void)double x, y;printf(本程序从标准输入获取x和y的值并显示x的y次方.n);x = input(PROMPT1);y = input(PROMPT2);printf(x的y次方是:%6.3fn, compute(x, y);retun 0;创建上述三个源文件和相应的头文件,用gcc编译器,生成power可执行文件,并运行power程序。给出完成上述工作的步骤和程序运行结果。注意:在生成可执行代码时不要忘了链接上数学库。创建makefile文件,使用make命令,生成power可执行文件,并运行power程序。给出完成上述工作的步骤和程序运行结果。4
7、GDB调试器的使用;使用GDB调试器调试上述程序,给出调试的步骤。5 make与makefile实验练习本实验是关于makefile内容的,不需要在计算机上进行编程运行,只需要回答下面这些问题。CC = gccOPTIONS = -O3 -oOBJECTS = main.o stack.o misc.oSOURCES = main.c stack.c misc.cHEADERS = main.h stack.h misc.hpolish:main.c$(OBJECTS) $(CC)$(OBJECTS) power $(OBJECTS) -lmmain.o:main.c main.h misc.
8、hstack.o:stack.c stack.h misc.hmisc.o:misc.c misc.h1) 所有宏定义的名字;2) 所有目标文件的名字;3) 每个目标的依赖文件;4) 画出makefile对应的依赖关系树;5) 生成每个目标文件所需要执行的命令;6) 生成main.o stack.o 和misc.o时会执行哪些命令,为什么?实验二 循环程序设计(2学时)实验目的:1 熟练掌握Linux下编辑器的使用;2 学会使用编译器GCC对源程序进行编译;3 熟练掌握循环语句的使用;4 掌握循环程序的设计方法;实验题目:1 求s = a + aa +aaa + aaaa + aaa的值,其中
9、a是一个数字。例如2 + 22 + 222 +2222 +22222(此时共有5个数相加), 几个数相加由键盘控制。2 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?3 判断101200之间有多少个素数,并输出所有素数。4 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?5 将一个正整数分解质因数。例如:输入90,打印出 = 。实验三 分支程序设计(2学时)实验目的:1 熟练掌握if、switch语句的使用2 掌握分支程序的设计方法3 能用分支语句解决实际问题实验题目:1 有一函数:yx x1
10、 2x-1 (1x10)3x-11 x10 写一程序,输入x值,输出y值。2 输入一学生分数,判断此分数为哪一等。设等级如下:100 80:A79 70:B69 60:C59 0:D其他:输入错误。3 输入某年某月某日,判断这一天是这一年的第几天。实验四 函数实验(2学时)实验目的:1 熟练掌握函数的应用;2 掌握实际问题功能的划分;3 熟练掌握函数的设计方法;4 掌握函数接口的设计;实验内容:1 编写函数,求两个直角边对应的斜边长度。2 编写函数,求两个正整数的最小公倍数和最大公约数,并输出。3 按下面要求编写程序:1)定义函数 total(n)计算1+2+3+.+n;2)定义函数,输入正整
11、数n,计算并输出下列算式的值。要求调用函数 total(n) 计算1+2+3+.+n。4 编写一个函数求1k + 2k + 3k + . + nk的值,假设k为4,n为6。实验五 指针实验(2学时)实验目的:1 熟练掌握指针的应用;2 能用指针解决实际问题,总结指针与数组的不同;3 熟练掌握指针使用的技巧及方法;4 掌握不同类型指针的处理方法;实验内容:1 编程实现:任意输入的10个数,求其平均值。要求:1) 10个数采用scanf语句读入;2) 利用指针实现对这10个数的访问;3) 要求平均值的精度为小数后面2位。 2 编程实现:输入三个整数,按由大到小的顺序输出。 要求:1) 通过scan
12、f函数输入三个数据并存入三个变量中;2) 利用指针实现从大到小输出;3) 修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出;4) 修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出;5) 体会指针对不同数据处理的特点。3 编写函数newcopy(char *new,char *old),它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中。 要求:1) 在主函数中以初始化方式输入一个字符串;2) 调用newcopy()函数;3) 在主函数中输出处理后的结果。 4 编程实现:将一个任意整数插入到一个已排序的整数数组中,插
13、入后数组中的数仍然保持有序。要求:1) 整数数组由初始化方式输入。任意整数由scanf函数输入;2) 实现过程采用指针处理;3) 输出原始数组数据以及插入数据后的数组数据并加以相应说明。 实验六 Linux常见数据结构实验(2学时)实验目的:1 掌握链表的生成方法;2 能够构造出一个二叉树;3 能对构造的二叉树进行常见操作;实验内容:1 编程实现:建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点内容输出;2 调试验证课本138页“构建顺序二叉树”程序,并先序遍历该二叉树;实验七 文件读写实验(2学时)实验目的:1 熟练掌握文件
14、的打开、关闭方法;2 熟练掌握文件的基本操作,能针对不同的使用,采用不同方式打开文件;3 掌握文件中数据的读出、查找以及插入;4 熟练掌握文件指针的作用;实验内容:1 编程实现:调用fopen函数,打开当前目录下的“a.c”文件(如果没有该文件,可以自己创建一个),若成功,在屏幕上显示“file open successfully”,若失败,在屏幕上显示“can not open the file”2 有5个学生,每个学生有三门课成绩,从键盘键入以上数据(包括学生号、姓名、3门课成绩),并存放在磁盘文件“stud”中。3 将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入到一个新文件“s