字符串:神秘的信
要求
1.输入一个字符串(包含数字,#,-)若为数字,则输出对应26位大写字母;若为#,则输出空格;若为-,则忽略
方案
1.对于Q1,主要问题在于数字的对应输出。接下来分情况讨论:
若为一位数,则直接使用映射
若为两位数,则同时读取当前数和下一个数,将当前数当作十位数,再进行映射
值得注意的是,字符串中的数字的类型均为字符,所以计算时用的是asc2码,而不能像整型一样直接计算
源码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int c, i, len;
string art;
cin >> c;
cin.get();
while (c--)
{
getline(cin, art);
len = art.size();
for (i = 0; i < len; i++)
{
if (art[i] == '#')
cout << ' ';
else if (art[i] >= '0' && art[i] <= '9')
{
if (art[i + 1] >= '0' && art[i] <= '9')
{
cout << char((art[i] - 48) * 10 + (art[i + 1] - 48) - 1 + 'A');
i++;
}
else
cout << char(art[i] - 49 + 'A');
}
}
cout << endl;
}
}