2014年王道论坛研究生机试练习赛(一) set 1 GrassLand密码
题目
根据手机按键上的对应关系将字母转成数字, 简单模拟题
总结
1. scanf("%s", input); 不需要加上 &
2. 字符串的终结符是 '\0'
3. scanf 和 printf 打印的都是 char*, 不能是 int*
代码
#include <iostream> #include <cstring> #include <stdio.h> using namespace std; int map[50]; void init() { for(int i = 0; i < 18; i ++) { map[i] = i/3 + 2; } map[18] = 7; for(int i = 19; i < 22; i ++) map[i] = 8; for(int i = 22; i < 26; i ++) map[i] = 9; } char ins[11000]; char outs[11000]; int main() { init(); //freopen("testcase.txt", "r", stdin); while(scanf("%s", ins) != EOF) { //printf("%s\n", ins); int len = strlen(ins); for(int i = 0; i < len; i ++) { outs[i] = map[ins[i]-'a']+'0'; } outs[len] = '\0'; printf("%s\n", outs); } return 0; }