问题及代码:
烟台大学计算机与控制工程学院
作者:毕春超
完成日期:2017年1月4日
题目描述
输入一个单词,输出中文意思
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char e[8000][20],c[8000][20];
int number=0;
int h(int low, int high, char *k);
int main( )
{
char key[20];
FILE *fp;
fp = fopen("word.txt","r");
if(fp==NULL)
{
printf("打开失败!\n");
exit(0);
}
while(!feof(fp))
{
fscanf(fp, "%s%s", e[number], c[number]);
number++;
}
fclose(fp);
printf("欢迎使用电子词典!\n");
do
{
printf("请输入要查的词(0000结束):");
scanf("%s", key);
if (strcmp(key,"0000")==0)
break;
else
{
int low=0,high=number-1;
int index=h(low, high, key);
if (index == -1)
printf("查无此词!请确认拼写是否正确!\n");
else
printf("%s 的中文意思是:%s\n", key, c[index]);
}
}
while(1);
printf("欢迎再次使用!\n");
return 0;
}
int h(int low, int high, char *k)
{
int mid;
while(low<=high)
{
mid=(low + high) / 2;
if(strcmp(e[mid],k)==0)
{
return mid;
if(strcmp(e[mid],k)>0)
high=mid-1;
else
low=mid+1;
return -1;
}
运算结果