一、C语言课程设计的目的:
高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目 的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际
有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能
力。
二,要求一种简单的英文词典排版系统的实现
(1)能输入和显示打入的单词。
(2)能分辨出单词。
(3)对重复的单词和已经输入的单词能自动排除。
(4)能按的顺序排版。
(5)能将运行结果以文本形式存储。
(6)具有添加新单词并重新排版的能力。
三.构架
结束
四。流程图
五。程序说明
程序第一次运行时,会创建一个“ word, txt "(不包括引号)的文本文件,然后要求输入单词。若要退
出,请不要点DOS窗口的小叉叉,输入d即可。因为程序在结束之前,对数组中的
单词重新排序,并存储到文件中。
#i nclude "stdio. h〃
^include "stdlib. h"为 exit 0 函数提供原型;
#i nclude "stri ng. h"字符串处理函数原型;
#i nclude "ctype. h"字符处理函数原型;
#defi ne ROWS 256
define COLS 32定义“字典”的大小:可存放256个单词,每个单词的长度不超过
31
static FILE *fp;定义文件指针:内部链接,文件作用域;
static char a [ROWS] [COLS];定义数组:内部链接,文件作用域;该数组的作用是将文 件的内容复制进来,并加以处理。因为处理数组比处理文件方便。
char get_option(void);接收用户的选项,防止误操作。若输入“a;"(不包括引号),那
么将视为选项a
int b(intcount);完成选项b的作用接收新单词;
void cCeharint count);完成选项c的作用一一通过指针对数组排序,实际数组元
素位置未改变;
int check (char arr[], int count);对输入的单词进彳丁分辨,若输入ni hao,将视为单词
Bi,并且提示并剔除重复的单词;
void storage (char *pt[], int count); 中。
-在程序结束z前重新排序存储数组屮的单词到文件
六。程序源代码。
#i nclude "stdio. h"
开始#in elude "stdlib? h" #include "string? h" #in elude "ctype. h" #defi ne ROWS 256 #defi ne COLS 32 static FILE *fp; static char a[ROWS][COLS]; char get_opti on( void): int b(i nt coun t);
开始
void c(char *pt[], i nt coun t); int check(char arr 11, i nt coun t); void storage(char
*pt [], i nt coun t) ; int main( void)
{ puts ("在新行输入END
{ puts ("在新行输入END结束输入:
int i, co unt;
int start;
char *pt[ROWS]; char
输入单词
每行一词 判断单词是否重复 重复进行替换且不录入
ch, le n; char in put;
输入EKD结東输入
if ((fp=fope n( "words, txt", "a+") )=NULL) {
fputsC不育呂打■开或建立文件I\rT, stderr);
exit(l);
}
fseek(fp, OL, SEEK.END);
start=(i nt)ftell(fp)/32;
coun t=start;
rewi nd(fp);
if (fread (a, 32* sizeof (char), st art, fp) =0) { i=0;
puts("开始创建词库”);
puts("请输入单词(每行一个门;
fflush(stdi n);
if (strncmp(a[i], "END", 3)=0)
{
coun t+二i; break;
} if(check(aEi], i)) con ti nue;
puts ("\t\t *********************欢迎使用 字典排版系统 *******************\n\n")
puts CMENU");
puts ("您要做些什么? ”);
puts ("a.显示已有的单词b