題目敘述
本題採EOF方式收資料,每筆資料有一個包含空格的字串,要求輸出每一個字元在鍵盤上往左移動兩格之後的字元 (空格不算,英文字母輸入輸出皆為小寫)。
範例輸入 #1
k[r dyt i[o
p '[nt ]y[jyd.
範例輸出 #1
how are you
i love program
解題思路
使用Map來紀錄每一個字元的對應值。單引號是用 \' 來表示,反斜線則是 \\。
解題程式碼如下 (僅供參考):
#include <iostream>
#include <map>
using namespace std;
int main() {
string str;
map<char, char>MAP;
MAP['2'] = '`';
MAP['3'] = '1';
MAP['4'] = '2';
MAP['5'] = '3';
MAP['6'] = '4';
MAP['7'] = '5';
MAP['8'] = '6';
MAP['9'] = '7';
MAP['0'] = '8';
MAP['-'] = '9';
MAP['='] = '0';
MAP['e'] = 'q';
MAP['r'] = 'w';
MAP['t'] = 'e';
MAP['y'] = 'r';
MAP['u'] = 't';
MAP['i'] = 'y';
MAP['o'] = 'u';
MAP['p'] = 'i';
MAP['['] = 'o';
MAP[']'] = 'p';
MAP['\\'] = '[';
MAP['d'] = 'a';
MAP['f'] = 's';
MAP['g'] = 'd';
MAP['h'] = 'f';
MAP['j'] = 'g';
MAP['k'] = 'h';
MAP['l'] = 'j';
MAP[';'] = 'k';
MAP['\''] = 'l';
MAP['c'] = 'z';
MAP['v'] = 'x';
MAP['b'] = 'c';
MAP['n'] = 'v';
MAP['m'] = 'b';
MAP[','] = 'n';
MAP['.'] = 'm';
MAP['/'] = ',';
MAP[' '] = ' ';
while (getline(cin, str))
{
for (int i = 0; i<str.length(); i++)
{
cout << MAP[str[i]];
}
cout << "\n";
}
}
留言
張貼留言