假设有九宫格输入法键盘布局如下:

[ 1,.?! ] [ 2ABC ] [ 3DEF ]

[ 4GHI ] [ 5JKL ] [ 6MNO ]

[ 7PQRS ] [ 8TUV ] [ 9WXYZ ]

[ 0空 ]

注意:中括号[ ]仅为了表示键盘的分隔,不是输入字符。每个中括号中,位于首位的数字字符即是键盘的按键,按一下即可输入该数字字符。多次按同一个键,则输入的字符依次循环轮流,例如按两次3,则输入D;按5次7,则输入S;按6次2,则输入A。按键0的输入组合是0和空格字符,即按两次0输入空格。

你需要对于给定的按键组合,给出该组合对应的文本。

输入格式:

输入在一行中给出数个字符的按键组合(例如 999 表示按3次9),每个字符的按键组合之间用空格间隔,最后一个输入法组合之后以换行结束。输入数据至少包括一个字符的按键组合,且输入总长度不超过500个字符。

输出格式:

在一行中输出该按键组合对应的文本。

输入样例:

22 5555 22 666 00 88 888 7777 4444 666 44

输出样例:

ALAN TURING

厂长的代码。。。。。。好看。。。

  1. string s[]={"0 ", "1,.?!", "2ABC", "3DEF", "4GHI", "5JKL", "6MNO", "7PQRS", "8TUV", "9WXYZ"};
  2. char ss[505];
  3. int main()
  4. {
  5. while(~scanf("%s", ss))
  6. {
  7. int n=strlen(ss)-1;
  8. n%=s[ss[0]-'0'].length();
  9. putchar(s[ss[0]-'0'][n]);
  10. }
  11. puts("");
  12. return 0;
  13. }

我的代码。。懒得改了//

。。。。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. typedef unsigned long long ULL;
  5. typedef pair<int, int> PI;
  6. typedef pair< PI, int> PII;
  7. const double eps=1e-5;
  8. const double pi=acos(-1.0);
  9. const int mod=1e9+7;
  10. const int INF=0x3f3f3f3f;
  11. const int MAXN=1100;
  12. #define lson l, m, rt<<1
  13. #define rson m+1, r, rt<<1|1
  14. const int N=1e4+10;
  15. int n;
  16. char s[N];
  17. char ans[N];
  18. void solve(char c,int num)
  19. {
  20. if(c=='0'){
  21. if(num==1)
  22. ans[n++]='0';
  23. else
  24. ans[n++]=' ';
  25. }
  26. else if(c=='1'){
  27. if(num==1){
  28. ans[n++]='1';
  29. }
  30. else if(num==2){
  31. ans[n++]=',';
  32. }
  33. else if(num==3){
  34. ans[n++]='.';
  35. }
  36. else if(num==4){
  37. ans[n++]='?';
  38. }
  39. else if(num==0){
  40. ans[n++]='!';
  41. }
  42. }
  43. else if(c=='2'){
  44. if(num==1){
  45. ans[n++]='2';
  46. }
  47. else if(num==2){
  48. ans[n++]='A';
  49. }
  50. else if(num==3){
  51. ans[n++]='B';
  52. }
  53. else if(num==0){
  54. ans[n++]='C';
  55. }
  56. }
  57. else if(c=='3'){
  58. if(num==1){
  59. ans[n++]='3';
  60. }
  61. else if(num==2){
  62. ans[n++]='D';
  63. }
  64. else if(num==3){
  65. ans[n++]='E';
  66. }
  67. else if(num==0){
  68. ans[n++]='F';
  69. }
  70. }
  71. else if(c=='4'){
  72. if(num==1){
  73. ans[n++]='4';
  74. }
  75. else if(num==2){
  76. ans[n++]='G';
  77. }
  78. else if(num==3){
  79. ans[n++]='H';
  80. }
  81. else if(num==0){
  82. ans[n++]='I';
  83. }
  84. }
  85. else if(c=='5'){
  86. if(num==1){
  87. ans[n++]='5';
  88. }
  89. else if(num==2){
  90. ans[n++]='J';
  91. }
  92. else if(num==3){
  93. ans[n++]='K';
  94. }
  95. else if(num==0){
  96. ans[n++]='L';
  97. }
  98. }
  99. else if(c=='6'){
  100. if(num==1){
  101. ans[n++]='6';
  102. }
  103. else if(num==2){
  104. ans[n++]='M';
  105. }
  106. else if(num==3){
  107. ans[n++]='N';
  108. }
  109. else if(num==0){
  110. ans[n++]='O';
  111. }
  112. }
  113. else if(c=='7'){
  114. if(num==1){
  115. ans[n++]='7';
  116. }
  117. else if(num==2){
  118. ans[n++]='P';
  119. }
  120. else if(num==3){
  121. ans[n++]='Q';
  122. }
  123. else if(num==4){
  124. ans[n++]='R';
  125. }
  126. else if(num==0){
  127. ans[n++]='S';
  128. }
  129. }
  130. else if(c=='8'){
  131. if(num==1){
  132. ans[n++]='8';
  133. }
  134. else if(num==2){
  135. ans[n++]='T';
  136. }
  137. else if(num==3){
  138. ans[n++]='U';
  139. }
  140. else if(num==0){
  141. ans[n++]='V';
  142. }
  143. }
  144. else if(c=='9'){
  145. if(num==1){
  146. ans[n++]='9';
  147. }
  148. else if(num==2){
  149. ans[n++]='W';
  150. }
  151. else if(num==3){
  152. ans[n++]='X';
  153. }
  154. else if(num==4){
  155. ans[n++]='Y';
  156. }
  157. else if(num==0){
  158. ans[n++]='Z';
  159. }
  160. }
  161. }
  162. int main()
  163. {
  164. gets(s);
  165. int len;
  166. char c;
  167. int num,flag;
  168. len=strlen(s);
  169. num=flag=n=0;
  170. for(int i=0;i<len;i++){
  171. if(s[i]!=' '){
  172. c=s[i];
  173. num++;
  174. flag=1;
  175. }
  176. else if(s[i]==' '){
  177. if(c=='1'||c=='7'||c=='9')
  178. num%=5;
  179. if(c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='8')
  180. num%=4;
  181. if(c=='0')
  182. num%=2;
  183. solve(c,num);
  184. num=0;
  185. flag=0;
  186. }
  187. }
  188. if(flag){
  189. if(c=='1'||c=='7'||c=='9')
  190. num%=5;
  191. if(c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='8')
  192. num%=4;
  193. if(c=='0')
  194. num%=2;
  195. solve(c,num);
  196. }
  197. ans[n]='\0';
  198. printf("%s",ans);
  199. return 0;
  200. }
  201. /*
  202. 22 5555555555 22 666 00 88 888 7777 4444 666 44
  203. */

PTA 模拟【string以及字母->数组下标】的更多相关文章

  1. C++程序设计方法3:数组下标运算符重载

    数组下标运算符重载 函数声明形式 返回类型operator[](参数): 如果返回类型是引用,则数组运算符调用可以出现在等式的左边,接受赋值,即: Obj[index] = value; 如果返回类型 ...

  2. 【c++习题】【17/5/22】重载数组下标操作符

    一.写出程序运行结果 1#include <iostream > using namespace std; int a[10]={1,2, 3, 4, 5, 6, 7, 8, 9, 10} ...

  3. Codeforces Round #279 (Div. 2)B. Queue(构造法,数组下标的巧用)

    这道题不错,思维上不难想到规律,但是如何写出优雅的代码比较考功力. 首先第一个人的序号可以确定,那么接下来所有奇数位的序号就可以一个连一个的确定了.然后a[i].first==0时的a[i].seco ...

  4. 二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历

    二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历   二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则 ...

  5. 网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符

    第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...

  6. Leetcode541/151之String与char数组与StringBuffer

    String与char数组与StringBuffer 通常情况下遇到删除字符或者反转字符串时需要将String转为char数组或者StringBuffer String与char数组 char [] ...

  7. C——数组下标与间址运算符

    只说一句,数组下标与间址运算符*是等价的,即:a[i] = *(a+i),看代码: int main(int argc, char* argv[]) { ] = {, , , , }; int i; ...

  8. PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组转换

    PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组之间的转换关系见下图 通过转换链,可以实现任意两个类型之间的互转.如PChar转PAnsiChar ...

  9. bash中不可以用字符串做数组下标

    bash中可以用字符串做数组下标吗例如 test["abc"]=1------解决方案-------------------- 好像是误会,是awk里可以,bash shell里不 ...

随机推荐

  1. Koala - 使用

    几天项目又加紧,样式想写又太慢! 下载考拉:http://pc6.dun.123ch.cn/download/koala%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7_30@ ...

  2. nginx 配置nginx.conf,负载均衡,逻辑分流

    nginx 最重要的配置文件nginx.conf: 一般的配置我不做解释,网上到处都是,主要对主要的几点进行注释(如下) worker_processes ; error_log /data/logs ...

  3. cocos2d-x 3.0 touch事件官方解释

    官方解释 http://www.cocos2d-x.org/docs/manual/framework/native/input/event-dispatcher/zh#_1

  4. innodb 乐观插入因空间不够导致失败,进入悲观插入阶段,这个空间的大小限制

    btr_cur_optimistic_insert{ ... /*检查分裂页时是否有足够的空间预留给未来记录的update*/ if (leaf && !zip_size && ...

  5. python第三方库系列之十八--python/django test库

    django是属于python语音的web框架,要说django測试.也能够先说说python的測试.django能够用python的方式測试,当然,django也基于python封装了一个自己的測试 ...

  6. [攻防实战]CTF大赛准备(手动注入sql)

    一.IIS write漏洞利用 先用工具扫描,再上传小马,使用菜刀连接即可. 思考点: 如何获知是一台IIS站点? 本例中上传的一句话木马是什么意思? <%eval request(" ...

  7. log4j 路径环境变量配置和log4j加载配置

    1.lo4j日志路径从环境变量读取,log4j.xml配置如下: 具体配置如下: log4j.appender.R.Encoding=UTF-8 log4j.appender.R=org.apache ...

  8. Delphi ActiveForm发布全攻略

    论坛上很多朋友(也包括我)提到ActiveForm的发布问题,都没有得到很好的解决.下面是本人开发ActiveForm的一点经验,拿出来跟大家分享,开发环境为 Win2000Server,IIS5.0 ...

  9. eclipse软件启动弹窗端口问题解决

    如果启动eclipse,弹出一个窗口,上面显示,8080 .8009.……等的提示,说明端口有冲突, 解决办法如下: 1.打开cmd 2.输入 netstat   -ano|findstr  8080 ...

  10. MYSQL初级学习笔记四:查询数据的操作DQL(SELECT基本形式)(26-35)

    知识点六:查询数据的操作DQL(SELECT基本形式)(26-35) CREATE DATABASE IF NOT EXISTS cms DEFAULT CHARACTER SET utf8; USE ...