这题靠STL的map可以轻松解决。只要注意用字符串作为map的键时不能是char *,因为在调用比如find比较键值时,就是对两个char *指针值的比较,而不是想要的字符串值的比较了。
#include <stdio.h>
#include <iterator>
#include <map>
#include <string>
#include <string.h>
using namespace std;
int main()
{
map<string, string> dictionary;
while (1)
{
char buf[100] = "";
char word1[11] = "";
char word2[11] = "";
gets(buf);
if (strlen(buf) == 0)
{
break;
}
sscanf(buf, "%s %s", word1, word2);
dictionary[word2] = word1;
// dictionary.insert(pair<string, string>(word2, word1));
}
char word[11] = "";
map<string, string>::iterator iter = dictionary.end();
while (scanf("%s", word) != EOF)
{
iter = dictionary.find(word);
if (iter == dictionary.end())
{
printf("eh\n");
}
else
{
printf("%s\n", iter->second.c_str());
}
}
return 0;
}