UVA - 10921 - Problem B - Find the Telephone

背景:

    今天无意间在VJ-Status看到有人提交UVA的题目,还好是水题一枚,哈哈。


题意:

    模拟手机九宫格输入法,把字母输入转换成数字输出。

    输入类似“1-HOME-SWEET-HOME”。

    输出类似“1-4663-79338-4663”。


分析:

    其实是水题,完全不用分析,可本着"书写重新思考"的宗旨,再简单的东西也得认真把思路写一写!

    因为完全是字符处理,放弃字符串方式。 → 直接逐个字符输入进行处理。

    按照字符大小进行对应输出,因为没用else,所以得特别注意各if之间不会有重叠区间。


#include <iostream>
#include <stdio.h>
using namespace std;

//#define LOCAL_TEST

int main()
{
#ifdef LOCAL_TEST
	freopen("..\\in.txt", "r", stdin);
	freopen("..\\out.txt", "w+", stdout);
#endif
	// 尝试别用F盘路径了。用相对路径

	char ch;
//	while ( cin >>ch )	// error, unable to get special character like 'enter'
	while ( (ch=cin.get()) != EOF )
	{
		if ( ch >= 'A' && ch <= 'O' )
			cout << (ch-'A')/3+2;
		if ( ch >='P' && ch<='S' )
			cout <<'7';
		if ( ch >='T' && ch<='V' )
			cout <<'8';
		if ( ch >='W' && ch<='Z' )
			cout <<'9';
		if ( ch<'A' || ch>'Z' )
			cout <<ch;
	} // end while

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值