程序设计实训三 电子词典
来源:互联网 发布:淘宝卖家设置多个客服 编辑:程序博客网 时间:2024/06/16 04:50
题目描述:
做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,
英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,
由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束,如图:
提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
编译的程序:
#include <stdio.h>#include <stdlib.h>#include <string.h> int binary_search(int first,int last ,char *word);//全局变量 char e[8000][20],c[8000][20];//全局变量,由文件中读入的英文和中文数组 int num=0;//词库中词汇的实际数目int main(){ char word[20];//要查询的词
//将文件中的数据读入到定义的数组中 FILE *fp; fp=fopen("dictionary.txt","r");//用fopen函数,用输入的方式打开文件 if(fp==NULL)//判断文件存不存在 { printf("error!cannot open dictionary.txt!\n"); printf("Please try again.\n"); exit(1);//函数库中提供的exit(1)结束程序的运行(exit函数是stdlib.h中提供的库函数,用来终止一个进程的执行,代表非正常结束 } while(!feof(fp))//如果读取成功则重复读取 { fscanf(fp,"%s %s",e[num],c[num]); num++; } fclose(fp);//关闭读入的文件 do { printf("请输入要查的词(0000结束):"); scanf("%s",word);//输入要查询的关键词 if(strcmp(word,"0000")==0)//如果输入0000则退出 break; else { int first=0,last=num-1;//初始化 int index=binary_search(first,last,word);//将binary_search的返回值赋值给index if(index==-1) printf("抱歉,没有找到您所要查询的单词!\n\n"); else printf("%s的中文意思是:%s",word,c[index]); } } while(1);//1为真,无限循环 printf("谢谢您的使用!再见\n\n"); return 0;} //二分查找法,返回的是数组中的下标 int binary_search(int first,int last,char *w) { int mid;//定义控制查找范围的变量并赋初值 while(first<=last) { mid=(first+last)/2;//取中间位置 //比较要查的词与中间位置的关系 if(strcmp(e[mid],w)==0) { //记录位置 return mid;//返回查找到的值 } else if(strcmp(e[mid],w)>0) last=mid-1;//在前半段找 else first=mid+1;//在后半段找 } return -1;//如果first>last则无法寻找 }运行结果:
0 0
- 程序设计实训三 电子词典
- 程序设计:电子词典
- 程序设计3-电子词典
- 程序设计实训报告--电子词典
- 程序设计实训报告-电子词典
- 程序设计实训项目三 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- 电子词典
- js笔记一:js中forEach,for in,for of循环的用法
- TranslationAnimation参数最好的解释以及基本用法
- SQL SERVER 常见函数应用
- 抽屉布局侧滑界面穿透了,导致被遮挡的界面可以被点击
- 一个简单的linux命令——locate
- 程序设计实训三 电子词典
- python virtualenv使用
- 黑客进阶之路一隐写术
- Log4J日志配置详解
- android 进程类型
- Android AutoLayout 全新的适配方式,堪称适配终结者
- tomcat7下spring3.2与mybatis3.1的兼容
- 转行之路,记录过程,积累知识----开头篇
- Android从顶部的下拉刷新(仿京东)