题目简述:先输入定义字典,然后按照输入查找相应的单词。
解题思路:
{
if(strcmp(c,"")==0)break;
int i,l=strlen(c);
for(i=0;i<l;++i)
{
if(c[i]==' ')break;
}
strncpy(a,c,i);
a[i]='\0';
strncpy(b,c+i+1,l-i);
b[l-i]='\0';
m[b]=a;
}
4、之后可以用find进行对输入字符的查找,然后输出对应的单词。
源代码:
解题感受:
这道题花的时间相对比较多,开始有思路但是做起来并不顺手,又因为刚开始就做这道题,所以刚开始就有些碰壁,主要就是因为输入的问题不好解决。也思考了好久好久,对于这道程序还是比较发怵的。但是最后通过了,内心是非常非常开心的。虽然得到了别人的帮助,但对于自己来讲也是有很多的收获。这道题真的花了超长时间,唉……还是水平不太够啊。
解题思路:
1、首先想到的是用map做,即使用find进行寻找。
2、但是在实际的操作中遇到了输入结束不了的问题。主要是由于定义字典之后的空行无法处理。
3、解决空行问题的方法如下:
while(gets(c)){
if(strcmp(c,"")==0)break;
int i,l=strlen(c);
for(i=0;i<l;++i)
{
if(c[i]==' ')break;
}
strncpy(a,c,i);
a[i]='\0';
strncpy(b,c+i+1,l-i);
b[l-i]='\0';
m[b]=a;
}
4、之后可以用find进行对输入字符的查找,然后输出对应的单词。
源代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<string,string>m;
map<string,string>::iterator d;
char a[13],b[13],c[30];
while(gets(c))
{
if(strcmp(c,"")==0)
break;
int i,l=strlen(c);
for(i=0;i<l;++i)
{
if(c[i]==' ')
break;
}
strncpy(a,c,i);
a[i]='\0';
strncpy(b,c+i+1,l-i);
b[l-i]='\0';
m[b]=a;
}
string q;
while(cin>>q)
{
d=m.find(q);
if(d!=m.end())
cout<<d->second<<endl;
else
cout<<"eh"<<endl;
}
return 0;
}
解题感受:
这道题花的时间相对比较多,开始有思路但是做起来并不顺手,又因为刚开始就做这道题,所以刚开始就有些碰壁,主要就是因为输入的问题不好解决。也思考了好久好久,对于这道程序还是比较发怵的。但是最后通过了,内心是非常非常开心的。虽然得到了别人的帮助,但对于自己来讲也是有很多的收获。这道题真的花了超长时间,唉……还是水平不太够啊。