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