您的位置:首页 > 其它

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

2017-03-15 18:41 253 查看
(欢迎阅读我的博客,如发现错误或有建议请评论留言,谢谢。)

题目要求:

自己定义一个词典,每一个英文单词都有一个对应的自定义字符串(中间用一个空格相隔),定义完后是一个空行,然后接下来的每一行输入一个英文单词,翻译为定义词典中的字符串,如果没有对应的字符串输出“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;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: