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

[ 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

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

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

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

。。。。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PI;
typedef pair< PI, int> PII;
const double eps=1e-5;
const double pi=acos(-1.0);
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
const int MAXN=1100;
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1 const int N=1e4+10; int n; char s[N];
char ans[N];
void solve(char c,int num)
{
if(c=='0'){
if(num==1)
ans[n++]='0';
else
ans[n++]=' ';
}
else if(c=='1'){
if(num==1){
ans[n++]='1';
}
else if(num==2){
ans[n++]=',';
}
else if(num==3){
ans[n++]='.';
}
else if(num==4){
ans[n++]='?';
}
else if(num==0){
ans[n++]='!';
}
}
else if(c=='2'){
if(num==1){
ans[n++]='2';
}
else if(num==2){
ans[n++]='A';
}
else if(num==3){
ans[n++]='B';
}
else if(num==0){
ans[n++]='C';
}
}
else if(c=='3'){
if(num==1){
ans[n++]='3';
}
else if(num==2){
ans[n++]='D';
}
else if(num==3){
ans[n++]='E';
}
else if(num==0){
ans[n++]='F';
}
}
else if(c=='4'){
if(num==1){
ans[n++]='4';
}
else if(num==2){
ans[n++]='G';
}
else if(num==3){
ans[n++]='H';
}
else if(num==0){
ans[n++]='I';
}
}
else if(c=='5'){
if(num==1){
ans[n++]='5';
}
else if(num==2){
ans[n++]='J';
}
else if(num==3){
ans[n++]='K';
}
else if(num==0){
ans[n++]='L';
}
}
else if(c=='6'){
if(num==1){
ans[n++]='6';
}
else if(num==2){
ans[n++]='M';
}
else if(num==3){
ans[n++]='N';
}
else if(num==0){
ans[n++]='O';
}
}
else if(c=='7'){
if(num==1){
ans[n++]='7';
}
else if(num==2){
ans[n++]='P';
}
else if(num==3){
ans[n++]='Q';
}
else if(num==4){
ans[n++]='R';
}
else if(num==0){
ans[n++]='S';
}
}
else if(c=='8'){
if(num==1){
ans[n++]='8';
}
else if(num==2){
ans[n++]='T';
}
else if(num==3){
ans[n++]='U';
}
else if(num==0){
ans[n++]='V';
}
}
else if(c=='9'){
if(num==1){
ans[n++]='9';
}
else if(num==2){
ans[n++]='W';
}
else if(num==3){
ans[n++]='X';
}
else if(num==4){
ans[n++]='Y';
}
else if(num==0){
ans[n++]='Z';
}
}
} int main()
{
gets(s);
int len;
char c;
int num,flag;
len=strlen(s);
num=flag=n=0;
for(int i=0;i<len;i++){
if(s[i]!=' '){
c=s[i];
num++;
flag=1;
}
else if(s[i]==' '){
if(c=='1'||c=='7'||c=='9')
num%=5;
if(c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='8')
num%=4;
if(c=='0')
num%=2;
solve(c,num);
num=0;
flag=0;
}
}
if(flag){
if(c=='1'||c=='7'||c=='9')
num%=5;
if(c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='8')
num%=4;
if(c=='0')
num%=2;
solve(c,num);
}
ans[n]='\0';
printf("%s",ans);
return 0;
}
/*
22 5555555555 22 666 00 88 888 7777 4444 666 44
*/

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. C#对二进制文件的特定位置进行读写小结

    虽然网络上关于“C#对二进制文件进行读写”的文章多如牛毛,但具体到自己要处理的问题时,难免让人产生“书到用时方恨少”和“纸上读来终觉浅”的感觉.我现在感觉要真正解决自己的问题,最终还是要靠自己下功夫. ...

  2. IOS Object和javaScript相互调用

    在IOS开发中有时会用到Object和javaScript相互调用,详细过程例如以下: 1. Object中运行javascript代码,这个比較简单,苹果提供了非常好的方法 - (NSString ...

  3. springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定

    springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...

  4. ormlite

    id 主键 默认为false generatedId 自增长的主键 默认值是false generatedIdSequence 字符串名称的序列号 类同generatedId,但您可以指定序列的名称使 ...

  5. 【转载】一张“神图”看懂单机/集群/热备/磁盘阵列(RAID)

    单机部署(stand-alone):只有一个饮水机提供服务,服务只部署一份 集群部署(cluster):有多个饮水机同时提供服务,服务冗余部署,每个冗余的服务都对外提供服务,一个服务挂掉时依然可用 热 ...

  6. 【转载】lvs为何不能完全替代DNS轮询

    上一篇文章"一分钟了解负载均衡的一切"引起了不少同学的关注,评论中大家争论的比较多的一个技术点是接入层负载均衡技术,部分同学持这样的观点: 1)nginx前端加入lvs和keepa ...

  7. 简单使用 Mvc 内置的 Ioc

    简单使用 Mvc 内置的 Ioc 本文基于 .NET Core 2.0. 鉴于网上的文章理论较多,鄙人不才,想整理一份 Hello World(Demo)版的文章. 目录 场景一:简单类的使用 场景二 ...

  8. actionbar tab 字体大小设置

    在styles.xml文件里加入以下的样式就可以 <!-- Application theme. -->     <style name="AppTheme" p ...

  9. csu1116 Kingdoms 最小生成树-枚举状态

    题目链接: csu 1116 题意: 有一幅双向图连接N个城市(标号1~n,1表示首都)  每一个城市有一个价值W. 地震摧毁了全部道路,现给出可修复的m条道路并给出修复每条道路所需的费用 问在总费用 ...

  10. 当年用httpclient时踩过的那些坑

    一.前言 httpclient是java开发中最常用的工具之一,通常大家会使用其中比较基础的api去调用远程.长期开发爬虫,会接触httpclient不常用的api,同时会遇到各式各样的坑,本文将总结 ...