当前位置:文档之家› C语言实验指导书

C语言实验指导书

实验内容一:
1)把实验中的bubble.c中的函数BubbleSort(char wordList[30][30], int n);改成BubbleSort(int nums[], int n);使之能够对整数数组进行排序。
实验内容二:
1)词典界面中增加“w”代表词典学习选项。
2)每次随机从链表中选出7个单词,以当前的日期为文件名保存到一个文件中,以上功能封装到intMemWord(WORDNODE * head,intnum)函数中。参数num代表词典中有多少个词。
︺︺helloworld︺
参考输出:
hello
world

内容一:
1)分别编写冒泡排序和快速排序两个算法。最后要变成两个函数,完成字符数组排序功能
QuickSort(charwordList[30][30], int low, int high); high代表数组最后一个元素的下标
BubbleSort(char wordList[30][30], int n);n代表数组中有多少个字符串需要排序
扩展思考:对不同的数据类型进行排序,就需要修改sort函数,有没有一种方法,编写出一个sort函数,能处理所有的数据类型呢?
第十次实验
自由选定一个feature(两个星期)
1)利用Map充当核心数据结构。
2)如果在windows下,移植到Linux中
3)利用VC或QT编写一个界面
4)其它任何自由的功能扩展
内容二:正则表达式
^代表字符串开始
.代表任意字符
$代表字符串末尾
程序:
输入:正则表达式字符串待匹配字符串,如果输入”$$$$$$”程序终止。
输出:如匹配成功,输出整个字符串,如果匹配不成功,输出lost,然后等待下一次用户的输入。
参考输入输出:
^a.$abcregular express and target string (separateby space),input
………………………………….
第七次实验
链表的建立,遍历,插入,删除,查找(主要练习指针的知识),链表的内容来源于我提供的一个词典文本文件dict。
子实验一内容:(4分)
1)以实验六中的单词的结构体为基础,建立一个链表结构。
2)从一个文本文件读入,然后保存到一个链表中,将这一部分功能封装到函数intCreate(WORDNODE** head)函数中,返回一共有多少个单词,以及整个链表的头节点(为什么这里要用指向指针的指针WORDNODE** head)。
第八次实验
构建词典系统界面(命令行界面,把3~7部分合并成最后的IDict系统)
实验内容:
1)综合利用以前生成的tool.h, tool.c,list.h, list.c。
2)基本的界面功能列表如下:
a增加一个单词
d删除一个单词
s查询一个单词(支持正则表达式)
q退出电子词典
h打印帮助文件
第九次实验
基于记忆曲线的词汇复习(在已有IDict上进行二次开发)。单词学习功能,每次随机的选择7个单词学习,并把一定时间以前学习过的单词提取出来进行复习。
编码提示:
1)分为4种情况
2)没有开始符号和结束符号的regular express需要双层循环
第四
内容一:登陆
1)介绍这个网站,同时介绍git软件。鼓励同学们利用git跟踪和参与别人的源代码
2)介绍Git书籍
内容二:学习函数和字符串处理的函数
编写以下函数
内容二:
1)编写循环读入每一个单词,直到读入$$$后终止;
2)把读入的单词输入到字符串数组中,分别调用两个排序功能对其进行排序。
3)提交两个不同的文件,quick.c,bubble.c分别进行测试。分别占5分,加起来的和为10分。
程序:
输入:20个单词
输出:排好序的20个单词
参考输入:
zhaoyan
输出:利用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])分割输入的字符串
12 33
参考输出:
45
参考输入:
12 abc
参考输出:
error input
思考和扩展(无标准答案)
如果用户输入12 12abc如何判断并终止程序,输出“error input”的提示
第二
内容一:登陆ACM,演示OJ系统
1)介绍这个网站,有兴趣的同学可以去尝试一下()
内容二:计算工资/小时程序
1)强制类型转换
3)插入时,考虑这个单词已经存在的情况,删除时,考虑这个单词不存在的情况
输入:两行文本,第一行为要插入的单词,第二行为需要删除的单词。
Hale Waihona Puke google︺n.公司︺rose︺︺
输出:链表内容写到一个文件dict-list中。同时,单词中含有数字,输出“error”插入时如果单词存在,在标准输出中输出“exist”,删除时如果单词存在,在标准输出中输出“no exist”,
Char[100] Chinese;保存词性和汉语意义
}WORD
3)构造一个WORD结构体数组,利用gets读入每一行,利用Trim去掉前后空格,利用Seg分割出两个字符串。
4)用两个字符串对结构体数组中每一个WORD结构中的Eword, Chinese进行填充。
5)然后修改排序算法,使得他能够对结构体数组进行排序。
内容二:登陆网站,在线提交。
1)熟悉基本的提交方法和规则
2)现场演示反作弊程序的效果
程序:
输入:两个整数,用空格分隔,
输出:两个整数的和,计算两个整数的和的功能,要求用函数实现,同时如果输入有错误,例如(12 abc)程序能够给出“error input”的提示。
参考输入:
2)一共有多少位的算法
3)整形数的溢出,以及针对特定问题,如何解决溢出问题
注意:linux编译下应该加上–lm开关。
程序:
输入:工资数,小时数(整数,空格分隔)。
输出:工资/小时数(精确到小数点后2位),并根据四舍五入取整,然后将取整的数平方后计算一共有几位,后三位分别是什么?
参考输入:
2345 2input(separateby space)
参考输出:
1172.50average salary
1173round off tointeger
7number ofdigit
0 2 5the last three digit (separateby space)
第三
内容一:介绍linux下的grep,并给出相应的实例。重点介绍下面要用到的四个符号。
要求用利用gets来获得用户输入的字符串,不能用scanf来获得用户输入的字符串
内容三:
运用以前的几个函数,在main中完成下面的流程图的功能。
程序:
输入:字符串
输出:根据流程图处理后的字符串
参考输入:
Ros1e
参考输出:
error
参考输入:
︺代表一个空格
︺︺hello︺
参考输出:
hello
参考输入:
3)然后遍历这个链表,输出到另外一个文件dict-list中。将这一部分功能封装到函数Iterate(WORDNODE * head)函数中。
输入:读入一个dict的文本文件,内容如下。利用Create构建链表。
abandon︺v.抛弃,放弃
abandonment︺n.放弃
abasement︺n.滥用
函数一:单词内是否包含数字int IsNumIn(charword[])
函数二:单词内是否包含空格int IsSpcIn(char word[])
函数三:去掉单词的前后空格,tab键Trim(char oldWord[], charnewWord[])
函数四:单词内部有空格,分解成多个单词Seg(char words[],char wArray[][100])假设单词内部只有一个空格,没有两个连续空格的情况发生。
6)输出排完序的结构体数组。
程序:
输入:20行字符串
输出:排好序的20个WORD结构
参考输入:
abasement︺n.滥用
︺︺abandon︺v.抛弃,放弃︺︺
abandonment︺n.放弃
……………………..
参考输出:
abandon︺v.抛弃,放弃
abandonment︺n.放弃
abasement︺n.滥用

每次实验(
第一次实验
内容一:熟悉编译环境和工具
在VS中键入以下的这段程序
1)关键字变色,自动缩近,智能提醒
2)代码风格和注释
3)编译出错,连接出错。修改错误
4)调试,断点,监控变量,进入函数,跳出函数。监控内存,监控堆栈
在linux中键入以下这段程序
1)熟悉VIM程序,gcc编译程序(开两个终端窗口)
lostresult,output
ab.$ababcregular express and target string (separateby space), input
ababcmatchsuccessfully, print the target string, output
相关主题