#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
string s1[8000],s2[8000];
int erfen(string k,string s1[],int n)
{
int low=0,hign=n-1,mid,i=-1;
while(low<=hign)
{
mid=(low+hign)/2;
if(k==s1[mid])
{
i=mid;
break;
}
else if(k>s1[mid])
{
low=mid+1;
}
else
{
hign=mid-1;
}
}
return i;
}
int main()
{
int num=0,index;
string key;
ifstream infile("file.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
while(infile>>s1[num]>>s2[num]) //两列,这样输出就会把文件内的英文和汉字输入进两个数组
{
num++;
}
while(1)
{
cout<<"请输入要查的词(0000结束):";
cin>>key;
if(key=="0000")//key是字符串型,所以0000需要加引号
{
break;
}
else
{
index=erfen(key,s1,8000);
}
if(index==-1)
{
cout<<"查无此词"<<endl;
}
else
{
cout<<key<<"的中文意思是:"<<s2[index]<<endl;
}
cout<<endl;
}
return 0;
}
刚开始时,一点思路也没有,后来看了去年老师发的答案,明白了,开始一点一点的写,出现了很多错误,最后终于改对了,还是要加油啊,还有很多东西等待去挖掘