《ACM程序设计》书中题目B-2

来源:互联网 发布:淘宝饰品店 编辑:程序博客网 时间:2024/04/26 19:42

(欢迎阅读我的博客,如发现错误或有建议请评论留言,谢谢。)

题目要求:
自己定义一个词典,每一个英文单词都有一个对应的自定义字符串(中间用一个空格相隔),定义完后是一个空行,然后接下来的每一行输入一个英文单词,翻译为定义词典中的字符串,如果没有对应的字符串输出“eh”。

题目思路:

利用map定义单词对应关系,用strcmp比较输入单词和字典中的单词,若对应则输出自定义字符串。

细节处理:

判断空格和空行来控制输入,利用strncpy来copy字符串的一部分分别赋给map中的两个变量;

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    map<string,string>m;
    char a[15],b[15],c[30];
    while(gets(c))
    {
        if(strcmp(c,"")==0)break;//用来判断空行
        int i,j;
        j=strlen(c);
        for(i=0;i<j;i++)
        {
            if(c[i]==' ')break;
            }
            strncpy(a,c,i);
            a[i]='\0';
            strncpy(b,c+i+1,j-i);
            b[j-i]='\0';
            m[b]=a;
        }
        while(cin>>b)
        {
            if(m[b]=="")//用来判断是否存在这个对应关系
            cout<<"eh"<<endl;
            else cout<<m[b]<<endl;
            }
            return 0;
    }

1 0