C语言实验指导书

  • 格式:pdf
  • 大小:522.62 KB
  • 文档页数:9

《C语言程序设计》实验指导书

每次实验(10分)一共100分,最后折合成50分计入最

终成绩。

第一次实验(一星期完成)

 内容一:熟悉编译环境和工具 在VS中键入以下的这段程序

1) 关键字变色, 自动缩近,智能提醒

2) 代码风格和注释

3) 编译出错, 连接出错。修改错误

4) 调试,断点,监控变量, 进入函数,跳出函数。 监控内存,监控堆栈 在linux中键入以下这段程序

1)熟悉VIM程序,gcc编译程序(开两个终端窗口)

2)熟悉GDB调试程序的基本技巧。 (list,backstrac; break, watch,delete; next, continue, run;

print,set,help) 其中,help命令是一个非常的参考,如果忘记了某条具体的命令,可以随时去参考help命令来得到相关的细节。

3)介绍《鸟歌的私房菜》这本书

 内容二:登陆cms.hit.edu.cn网站,在线提交。

1) 熟悉基本的提交方法和规则

2) 现场演示反作弊程序的效果

 程序: 输入:两个整数,用空格分隔,

输出:两个整数的和,计算两个整数的和的功能,要求用函数实现,同时如果输入有错误,

例如(12 abc)程序能够给出“error input”的提示。

参考输入:

12 33

参考输出:

45

参考输入:

12 abc

参考输出: error input

 思考和扩展(无标准答案)

如果用户输入 12 12abc 如何判断并终止程序,输出“error input”的提示

第二次实验(一星期完成)

 内容一:登陆ACM,演示OJ系统 1)介绍这个网站,有兴趣的同学可以去尝试一下()

 内容二:计算工资/小时程序

1)强制类型转换

2)一共有多少位的算法

3)整形数的溢出,以及针对特定问题,如何解决溢出问题

注意:linux编译下应该加上 –lm 开关。

 程序: 输入:工资数,小时数(整数,空格分隔)。

输出:工资/小时数(精确到小数点后2位),并根据四舍五入取整,然后将取整的数平方后

计算一共有几位,后三位分别是什么?

参考输入:

2345 2 input (separate by space)

参考输出:

1172.50 average salary 1173  round off to integer

7  number of digit

0 2 5  the last three digit (separate by space)

第三次实验(两星期完成)

 内容一:介绍linux 下的grep,并给出相应的实例。重点介绍下面要用到的四个符号。

 内容二:正则表达式

^ 代表字符串开始

. 代表任意字符

$ 代表字符串末尾

 程序: 输入:正则表达式字符串 待匹配字符串,如果输入”$$$ $$$”程序终止。 输出:如匹配成功,输出整个字符串,如果匹配不成功,输出lost,然后等待下一次用户的

输入。

参考输入输出:

^a.$ abc regular express and target string (separate by space),input lost result, output

ab.$ ababc  regular express and target string (separate by space), input

ababc  match successfully, print the target string, output

$$$ $$$ 结束整个程序

编码提示:

1)分为4种情况

2)没有开始符号和结束符号的regular express 需要双层循环

第四次实验(两星期完成)

 内容一:登陆project.software.hit.edu.cn 1)介绍这个网站,同时介绍git软件。鼓励同学们利用git跟踪和参与别人的源代码 2)介绍Git书籍

 内容二:学习函数和字符串处理的函数 编写以下函数

函数一:单词内是否包含数字 int IsNumIn(char word[])

函数二:单词内是否包含空格 int IsSpcIn(char word[]) 函数三:去掉单词的前后空格,tab键 Trim(char oldWord[], char newWord[])

函数四:单词内部有空格,分解成多个单词 Seg(char words[], char wArray[][100] ) 假设单词

内部只有一个空格,没有两个连续空格的情况发生。

要求用利用gets来获得用户输入的字符串,不能用scanf来获得用户输入的字符串

 内容三: 运用以前的几个函数,在main中完成下面的流程图的功能。

 程序: 输入:字符串

输出:根据流程图处理后的字符串

参考输入:

Ros1e

参考输出:

error

参考输入:

︺代表一个空格

︺︺hello︺

参考输出:

hello 否单词中是否包含空格 单词中是否包含数字

去掉前后空格

根据空格分词, 并输出每一个词

结束 开始

输出“error” 是

输出单词 否

是 参考输入:

︺︺hello world︺

参考输出: hello

world

第五次实验(两星期完成)

 内容一:

1)分别编写冒泡排序和快速排序两个算法。最后要变成两个函数,完成字符数组排序

功能 QuickSort(char wordList[30][30], int low, int high); high 代表数组最后一个元素的下标

BubbleSort(char wordList[30][30], int n); n代表数组中有多少个字符串需要排序

 内容二: 1)编写循环读入每一个单词,直到读入$$$后终止; 2)把读入的单词输入到字符串数组中,分别调用两个排序功能对其进行排序。

3)提交两个不同的文件,quick.c , bubble.c 分别进行测试。分别占5分,加起来的和为

10分。

 程序: 输入:20个单词

输出:排好序的20个单词

参考输入:

zhaoyan say

hello

world

to

you 参考输出:

hello

say

to

world you

zhaoyan

第六次实验(两星期完成)

 内容一:

1) 把实验四和实验五的的函数分别写成 tool.c tool.h. Sort.c sort.h 四个文件,以便方便

别人调用。

2) 定义单词的结构体。

Typedef struct word{

Char[30] Eword; 保存英语单词

Char[100] Chinese; 保存词性和汉语意义 }WORD

3) 构造一个WORD结构体数组,利用gets读入每一行,利用Trim去掉前后空格,利

用Seg分割出两个字符串。

4) 用两个字符串对结构体数组中每一个WORD结构中的Eword, Chinese进行填充。

5) 然后修改排序算法,使得他能够对结构体数组进行排序。

6) 输出排完序的结构体数组。

 程序: 输入:20行字符串 输出:排好序的20个WORD结构

参考输入:

abasement︺n.滥用

︺︺abandon︺v.抛弃,放弃︺︺ abandonment︺n.放弃

……………………..

参考输出:

abandon︺v.抛弃,放弃

abandonment︺n.放弃 abasement︺n.滥用

………………………………….

第七次实验(三星期完成)

链表的建立,遍历,插入,删除,查找(主要练习指针的知识),链表的内容来源于我提供的一个词典文本文件dict。

 子实验一内容:(4分)

1) 以实验六中的单词的结构体为基础,建立一个链表结构。

2) 从一个文本文件读入,然后保存到一个链表中,将这一部分功能封装到

函数int Create(WORDNODE** head)函数中,返回一共有多少个单词,以

及整个链表的头节点(为什么这里要用指向指针的指针WORDNODE**

head)。

3) 然后遍历这个链表,输出到另外一个文件dict-list中。将这一部分功能封

装到函数Iterate(WORDNODE * head)函数中。

输入:读入一个dict的文本文件,内容如下。利用Create构建链表。 abandon︺v.抛弃,放弃

abandonment︺n.放弃

abasement︺n.滥用 输出:利用Iterate写到一个文件dict-list中, 内容如下:

abandon︺v.抛弃,放弃 abandonment︺n.放弃

abasement︺n.滥用

 子实验二内容:(3分)

1) 利用gets函数来完成字符串的读入工作

2) 插入,删除功能中,要调用int IsNumIn(char word[]) 和Trim(char oldWord[], char

newWord[]) 两个函数对输入的单词进行必要的效验,如果输入的单词含有数字,插

入失败,提示用户”error”。用 Seg(char words[], char wArray[][100] )分割输入的字符

串 3) 插入时,考虑这个单词已经存在的情况,删除时,考虑这个单词不存在

的情况

输入:两行文本,第一行为要插入的单词,第二行为需要删除的单词。

google︺n.公司

︺rose︺︺

输出:链表内容写到一个文件dict-list中。同时,单词中含有数字,输出“error”

插入时如果单词存在,在标准输出中输出 “exist”, 删除时如果单词存在,

在标准输出中输出 “no exist”,

 子实验三内容:(3分)