zoukankan      html  css  js  c++  java
  • ny643 发短信 stl库 map函数

    发短信

           
    时间限制:1000 ms  |            内存限制:65535 KB
           
    难度:3  
           
    描述
           
    下图是手机常用的九键英文输入法界面,如果要输入字母'A',我们只
    需要按一次数字键2,按键顺序记为2;如果要输入字母'B'的话,我们需要连续按两次数字键2,按键顺序记为22;同理:字母'C’需要连续按3次数字键2,按键顺序记为222。通过这种方法,我们用手机10多个键就能输入26个英文字母。
    现在你的任务是统计一段英文用手机输入的按键顺序,同样,你也要能把按键顺序翻译成相应的英文内容。
    为了使问题简化,我们假设内容只有大写英文字母和空格。
    输入         有多组测试数据
    每组测试数据占一行,有两种情况:
    (1)短信内容(只含有若干个空格和大写字母,不超过1000个字符)
    (2)短信按键顺序(只含有若干空格和数字,其中第一个肯定是数字,不超过1000个字符)         输出         对于每组测试数据:
    如果是短信内容,输出每个字母的按键顺序,每个字母的按键顺序用空格隔开
    如果是按键顺序,输出它代表的内容
      样例输入                    
    I LOVE YOU
    HELLO WORLD
    444 0 555 666 888 33 0 999 666 88
    44 33 555 555 666 0 9 666 777 555 3
       样例输出                    
    444 0 555 666 888 33 0 999 666 88
    44 33 555 555 666 0 9 666 777 555 3
    I LOVE YOU
    HELLO WORLD
       编译代码:刚学c++,借用的库:
    #pragma warning(disable:4786)
    
    #include<iostream>
    
    #include<stdio.h>
    
    #include<string>
    
    #include<cstring>
    
    #include<map>
    
    using namespace std;
    
    map<string,string>m;
    
    map< string , string >::iterator it ;
    
    void init()
    
    {
    
     
    
           m["0"] = " " ;
    
           m["2"] = "A" ; m["22"] = "B" ; m["222"] = "C" ;
    
           m["3"] = "D" ; m["33"] = "E" ; m["333"] = "F" ;
    
           m["4"] = "G" ; m["44"] = "H" ; m["444"] = "I" ;
    
           m["5"] = "J" ; m["55"] = "K" ; m["555"] = "L" ;
    
           m["6"] = "M" ; m["66"] = "N" ; m["666"] = "O" ;
    
           m["7"] = "P" ; m["77"] = "Q" ; m["777"] = "R" ; m["7777"] = "S" ;
    
           m["8"] = "T" ; m["88"] = "U" ; m["888"] = "V" ;
    
           m["9"] = "W" ; m["99"] = "X" ; m["999"] = "Y" ; m["9999"] = "Z" ;
    
           m[" "] = "0" ;
    
           m["A"] = "2" ; m["B"] = "22" ; m["C"] = "222" ;
    
           m["D"] = "3" ; m["E"] = "33" ; m["F"] = "333" ;
    
           m["G"] = "4" ; m["H"] = "44" ; m["I"] = "444" ;
    
           m["J"] = "5" ; m["K"] = "55" ; m["L"] = "555" ;
    
           m["M"] = "6" ; m["N"] = "66" ; m["O"] = "666" ;
    
           m["P"] = "7" ; m["Q"] = "77" ; m["R"] = "777" ; m["S"] = "7777" ;
    
           m["T"] = "8" ; m["U"] = "88" ; m["V"] = "888" ;
    
           m["W"] = "9" ; m["X"] = "99" ; m["Y"] = "999" ; m["Z"] = "9999" ;
    
     
    
     
    
    }
    
    void fun(char a[])
    
    {
    
           it = m.find(a) ;
    
              if( it != m.end() )
    
              cout<<it->second<<" ";   
    
    }
    
    void fuu(char a[])
    
    {
    
    it = m.find(a) ;
    
              if( it != m.end() )
    
              cout<<it->second;
    
    }
    
    int main()
    
    {
    
    char str[1000],s[10];
    
    init();
    
    int i=1,j,k,n;
    
    while( gets(str)!=NULL)
    
    {k=0;
    
    if(str[0]>='0' && str[0]<='9')//判断输入的是数字还是字符
    
    {n=0;
    
              int x=strlen(str);//把接收到的字符串都转化成单个的短字符串
    
        for(i=0; i<x; i++)
    
    {
    
    if(str[i]!=' ')
    
    {
    
    s[n++]=str[i];
    
    if(i==x-1)
    
    {s[n]='';fuu(s);}
    
    }
    
    else
    
    {
    
    s[n]='';n=0;
    
    fuu(s);
    
    }
    
    }
    
     
    
    }
    
    else 
    
    {
    
    for(j=0;str[j]!='';j++)//如果是字符则一个一个的都赋值,一个字符就是一个字符串,包括空格;
    
    {
    
    s[0]=str[j];s[1]='';
    
    fun(s);
    
    }
    
     
    
    }
    
    cout<<endl;
    
    }
    
     
    
    return 0;
    
    }
  • 相关阅读:
    青少年机器人技术等级考试实际操作试卷(三级)201812 new
    SQL预编译 new
    青少年机器人技术等级考试实际操作试卷(三级)201809 new
    青少年机器人技术等级考试实际操作试卷(三级)201803 new
    SQL基本练习 new
    Asp.Net MVC 自定义一个ActionResult用于AJAX交互
    使用 TeamLab 来协同和管理工作
    使用Chose来美化Select
    在Asp.Net下使用couchbase实现分布式缓存
    如何修改couchbase的RAM
  • 原文地址:https://www.cnblogs.com/lovychen/p/3197228.html
Copyright © 2011-2022 走看看