发布网友 发布时间:2022-04-28 22:40
共3个回答
热心网友 时间:2022-06-24 10:04
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "ctype.h" #define ROWS 256 #define COLS 32 static FILE *fp; static char a[ROWS][COLS]; char get_option(void); int b(int count); void c(char *pt[], int count); int check(char arr[], int count); void storage(char *pt[], int count); int main(void) { int i,count; int start; char *pt[ROWS]; char ch, len; char input; if((fp=fopen("words.txt","a+"))==NULL) { fputs("不能打开或建立文件!\n",stderr); exit(1); } fseek(fp,0L,SEEK_END); start=(int)ftell(fp)/32; count=start; rewind(fp); if(fread(a,32*sizeof(char),start,fp)==0) { i=0; puts("请输入单词(每行一个),在新行输入END结束输入:"); while(i<ROWS&&scanf("%s", a[i])==1) { fflush(stdin); if(strncmp(a[i],"END",3)==0) { count+=i; break; } if(check(a[i], i)) continue; i++; } } puts("您要做些什么?"); puts("a. 显示已有的单词 b. 添加新单词"); puts("c. 对已有的单词进行排序 d. 退出"); while((input=get_option())!='d') { if(input=='a') { puts("已有的单词:"); for(i=0;i<count;i++) { printf(" "); puts(a[i]); } } if(input=='b') { puts("请输入新的单词(每行一个),在新行输入END结束输入: "); count=b(count); } if(input=='c') { puts("对单词进行排序:"); c(pt, count); for(i=0;i<count;i++) { printf(" "); puts(pt[i]); } } puts("还要做些什么?"); } storage(pt,count); fclose(fp); puts("再见!"); return 0; } char get_option(void) { char ch; while((ch=getchar())<'a'||ch>'d') { while((ch=getchar())!='\n') ; puts("请输入a,b,c或者d."); } fflush(stdin); return ch; } int b(int count) { int i; i=count; while(i<ROWS&&scanf("%s", a[i])==1) { fflush(stdin); if(check(a[i], i)) continue; if(strncmp(a[i],"END",3)==0) { count=i; break; } i++; } return count; } void c(char *pt[], int count) { int i,j; char *temp; for(i=0;i<ROWS;i++) pt[i]=a[i]; for(i=0;i<count;i++) for(j=i+1;j<count;j++) { if(strcmp(pt[i],pt[j])>0) { temp=pt[i]; pt[i]=pt[j]; pt[j]=temp; } } } int check(char arr[], int count) { int i; int flag=0; for(i=0;i<strlen(arr);i++) if(isalpha(arr[i])==0) { printf("%s不是一个单词.\n",arr); flag=1; break; } for(i=0;i<count;i++) if(strncmp(a[i],a[count],strlen(a[count])+1)==0) { puts("重复的单词!"); flag=1; } return flag; } void storage(char *pt[], int count) { int i,j; char ptr[ROWS][COLS]; c(pt, count); for(i=0;i<count;i++) for(j=0;pt[i][j]!='\0';j++) ptr[i][j]=pt[i][j]; fp=fopen("words.txt","w+"); rewind(fp); fwrite(ptr,32*sizeof(char),count,fp); }热心网友 时间:2022-06-24 10:04
付费内容限时免费查看回答打开CSDN APPCopyright © 1999-2020, CSDN.NET, All Rights Reserved
二进制*攻略
登录
英文字典设计c语言代码,一种简单的英文词典排版系统 转载
2021-05-22 14:15:33
戒糖ing
码龄4年
关注
《一种简单的英文词典排版系统》由会员分享,可在线阅读,更多相关《一种简单的英文词典排版系统(20页珍藏版)》请在人人文库网上搜索。
1、中国地质大学(武汉)C语言课程设计论文学 院:工程学院 专 业:勘察技术与工程 题 目:一种简单的英文词典排版系统 班 级:54073 姓 名: 学 号: 2009年1月一种简单的英文词典排版系统摘 要在英文词典排版当中,人工统计的速度很慢,且容易出现差错。本英文词典排版系统的自动化加速了排版工作,提高工作效率本程序主要采用对零散的单词进行自动读取,然后按单词首字母顺序讲单词保存到文档,这样的结构化非常便于程序后续的排版工作。排版具体过程涉及到自动排除重复单词与添加新单词并重新排版等问题,将于正问中详细介绍。本程序实现了所有设计要求。关键词:英文词典排版系统,结构体,排版,单词目 录 中文摘要。
2、主要符号表1 题目要求11.1.12 需求分析3 总体设计4 详细设计4.1主函数4.2各功能模块设计5运行结果(附带抓图)6总结参考文献致谢主要符号表#include stdlib.h 为exit()函数提供原型; #include string.h字符串处理函数原型; #include ctype.h字符处理函数原型; #define ROWS 256 #define COLS 32定义“字典”的大小:可存放256个单词,每个单词的长度不超过31 static FILE *fp;定义文件指针:内部链接,文件作用域; static char aROWSCOLS;定义数组:内部链接,文件作用域。
3、;该数组的作用是将文件的内容复制进来,并加以处理。因为处理数组比处理文件方便。 char get_option(void);接收用户的选项,防止误操作。若输入“a;”(不包括引号),那么将视为选项a int b(int count);完成选项b的作用接收新单词; void c(char *pt, int count);完成选项c的作用通过指针对
亲,希望我的回答能够帮到你。
亲你好,方便的话用,用发财小手给我个5星赞,谢谢
热心网友 时间:2022-06-24 10:05
用链表吧;