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;
}

 

你可能感兴趣的:(set)