目 录
实验一 Linux编程环境实验(4学时) .................... 1 实验二 循环程序设计(2学时) .......................... 4 实验三 分支程序设计(2学时) .......................... 5 实验四 实验五 实验六 Linux实验七 实验八 实验九 实验十 Linux
函数实验(2学时) .............................. 6 指针实验(2学时) .............................. 7 常见数据结构实验(2学时) ................ 8 文件读写实验(2学时) .......................... 9 多线程实验(2学时) ........................... 10 网络编程实验(2学时) ......................... 11 应用程序的编写(4学时) ................. 12
实验一 Linux编程环境实验(4学时)
实验目的:
1.掌握Linux操作系统的基本命令,能对文件、文件夹进行相应的操作; 2.熟练掌握Linux下编辑器的使用;
3.学会使用编译器GCC对源程序进行编译; 4.掌握调试程序GDB的使用以及调试过程;
实验内容:
1.Linux常用命令;
1) 以root账号登陆Linux系统,创建新用户:student 2) 更改该用户密码为:123456 3) 切换到student账户
4) 查看用户主目录(/home/student)下的目录、文件信息 5) 创建新目录/home/student/source
6) 查看source的属性,并重新设置其权限为777
7) 查看/usr/include目录下所有后缀为.h的文件,并将它们都复制到
/home/student/souce目录下
8) 在用户主目录下创建新目录destination,并设置其权限为777 9) 将source目录下的文件都移动到destination目录下 10) 删除destination目录下的所有文件
11) 用man命令查看rename的使用手册(还有哪些方法可以获得命令帮
助?)
12) 重命名source目录为haha
13) 删除haha目录和destination目录
2.Vi编辑器的使用;
熟练完成vimtutor中的练习;(写完成以后的体会,字数不限!)
3.GCC编译器的使用;
1) 用gcc带不同参数编译下列C程序,并观察每次的运行结果。
#include
printf(“hello linux!\\n”); return 0; }
2) 用编辑器创建main.c, compute.c, input.c, compute.h, input.h和
main.h文件。下面是它们的内容。注意compute.h和input.h文件仅包含了compute和input函数的声明但是没有定义。定义部分在
1
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 PROMPT2 \请输入y的值:\
$cat compute.c #include
double compute(double x, double y) { return(pow((double)x, (double)y)); }
$cat input.c
#include
$cat main.c
#include
2
printf(\本程序从标准输入获取x和y的值并显示x的y次方.\\n\ x = input(PROMPT1); y = input(PROMPT2); printf(\的y次方是:%6.3f\\n\ retun 0; }
创建上述三个源文件和相应的头文件,用gcc编译器,生成power可执行文件,并运行power程序。给出完成上述工作的步骤和程序运行结果。注意:在生成可执行代码时不要忘了链接上数学库。
创建makefile文件,使用make命令,生成power可执行文件,并运行power程序。给出完成上述工作的步骤和程序运行结果。
4.GDB调试器的使用;
使用GDB调试器调试上述程序,给出调试的步骤。
5.make与makefile实验练习
本实验是关于makefile内容的,不需要在计算机上进行编程运行,只需要回答下面这些问题。
CC = gcc
OPTIONS = -O3 -o
OBJECTS = main.o stack.o misc.o SOURCES = main.c stack.c misc.c HEADERS = main.h stack.h misc.h polish:main.c$(OBJECTS)
$(CC)$(OBJECTS) power $(OBJECTS) -lm main.o:main.c main.h misc.h stack.o:stack.c stack.h misc.h misc.o:misc.c misc.h
1) 所有宏定义的名字; 2) 所有目标文件的名字; 3) 每个目标的依赖文件;
4) 画出makefile对应的依赖关系树; 5) 生成每个目标文件所需要执行的命令;
6) 生成main.o stack.o 和misc.o时会执行哪些命令,为什么?
3
实验二 循环程序设计(2学时)
实验目的:
1.熟练掌握Linux下编辑器的使用;
2.学会使用编译器GCC对源程序进行编译; 3.熟练掌握循环语句的使用; 4.掌握循环程序的设计方法;
实验题目:
1.求s = a + aa +aaa + aaaa + aa…a的值,其中a是一个数字。例如2 + 22 + 222 +2222 +22222(此时共有5个数相加), 几个数相加由键盘控制。
2.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
3.判断101~200之间有多少个素数,并输出所有素数。
4.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
5.将一个正整数分解质因数。例如:输入90,打印出90 = 2×3×3×5。
4