2019 复旦大学工研院上机题-手机按键

题目:
模拟老式手机输入,九宫格布局如下:
题目输入为数字或者’-’,其中‘-’代表手机输入时等待的时间间隔,数字表示点击某
个按键的次数。比如点击两次 2,则输出为 B,四次 2,则输出为 A。
例:
输入:
255
输出:
AK
输入(等待间隔‘-’可以无限长,也可以没有):
2222------55
输出:
AK

  1. 分析
    利用数组存储按键值。输入字符串,判断是否有连续相同的字符,如果有,记录其个数,作为访问数组的下标用
  2. 代码
#include<iostream>
using namespace std;
char m[10][4]={{},{},{'A','B','C'},{'D','E','F'},{'G','H','I'},{'J','K','L'},{'M','N','O'},{'P','Q','R','S'},{'T','U','V'},{'W','X','Y','Z'}};
int main(){
	string s;
	cin>>s;
	int i;
	for(i=0;i<s.length();){
		int cnt=1;
		int j=i;
		while(s[j]==s[j+1]&&s[j]>='0'&&s[j]<='9'){
			cnt++;
			j++;
		}
		if(s[i]=='7'||s[i]=='9')
			cout<<m[s[i]-'0'][(cnt-1)%4];
		if(s[i]<='9'&&s[i]>='0'&&s[i]!='7'&&s[i]!='9')
			cout<<m[s[i]-'0'][(cnt-1)%3];
		i+=cnt;
	}
	return 0;
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值