#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void menu();
void open();
int seach();
void show(int);
char english[8000][20],chinese[8000][20];//用來存儲單詞的數組
char key[20];//保存要查單詞的變量
int num=0;//單詞的數目
int main()
{
char c;//控制程序開始的變量
int n;
menu();
scanf("%c",&c);
if(c=='y'||c=='Y')
{
open();
do
{
n=seach();
if(n==-2)
break;
else
show(n);
}
while(1);
printf("歡迎您再次使用!\n");
}
else
printf("歡迎您再次使用!\n");
return 0;
}
/*************************************************************
功能描述:顯示友好界面
輸入參數:無
返 回 值:無
其他說明:無
/************************************************************/
void menu()
{
printf("請把字典文件放在指定的D:\\路徑下,以確保程序能夠順利運行\n");
printf("準備好後按Y鍵開始程序,按任意鍵退出\t");
}
/*************************************************************
功能描述:打開文件並將數據讀入數組
輸入參數:無
返 回 值:無
其他說明:無
/************************************************************/
void open()
{
FILE *fp;//定義文件指針
fp=fopen("D:\\dictionary.txt","r");
if(fp==NULL)
{
printf("打開失敗!請確認字典文件是否在D:\\路徑下\n");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%s %s",english[num],chinese[num]);
num++;
}
fclose(fp);
}
/*************************************************************
功能描述:利用二分法查找目標單詞
輸入參數:key-要查找的單詞
返 回 值:index-控制查找結果的變量
其他說明:無
/************************************************************/
int seach()
{
int low=0,high=num-1,index=-1,mid;//定義查找區間的上下界
printf("請輸入你要查找的單詞(0000結束)\n");
scanf("%s",key);
if(strcmp(key,"0000")==0)
return -2;
else
{
while(low<=high)
{
mid=(low+high);
if(strcmp(english[mid],key)==0)
{
index=mid;
break;
}
else if(strcmp(english[mid],key)>0)
high=mid-1;
else
low=mid+1;
}
}
return index;
}
/*************************************************************
功能描述:輸出查找結果
輸入參數:無
返 回 值:無
其他說明:無
/************************************************************/
void show(int index)
{
if(index==-1)
printf("對不起,沒有查找到%s的意思\n",key);
else
printf("%s的中文意思是:%s\n",key,chinese[index]);
}
c項目3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.