【暑期基础3】C HDU 2055 An easy problem

题意

对于字母 ch,f(ch) 的含义是:ch 为大写时对应正数 1 ~ 26,ch 为小写时对应负数 -1 ~ -26。题目给出某字母 ch 和一个数 num,求: f(ch) + num 的和。


思路

思路一:

判断这个字母 ch 是大写还是小写(ch > ‘Z’ 即可视为小写),f(小写字母) 的值为 - (ch - ‘a’ + 1), f(大写字母) 的值为 (ch - ‘A’ + 1)。

思路二:

弄两个数组,一个存大写,一个存小写。其余见代码。(现在觉得这个方法略蠢)


AC 代码 *

#include 

int main() {
    char ch;
    int t, num;
    scanf("%d\n", &t);
    while ( t-- ) {
        scanf("%c%d%*c", &ch, &num);
        printf( "%d\n", ch > 'Z' ? num - (ch - 'a' + 1) : num + (ch - 'A' + 1) );
    }
    return 0;
}

其他方式:

#include 

int main() {
    char ch;
    int t, i, num;
    scanf("%d\n", &t);
    int uppercase[26];
    int lowercase[26];
    for (i = 0; i < 26; i++){
        uppercase[i] = i + 1;
    }
    for (i = 0; i < 26; i++){
        lowercase[i] = -( i + 1 );
    }
    while ( t-- ) {
        scanf("%c%d%*c", &ch, &num);
        if ( ch - 'Z' > 0 ){
            printf("%d\n", num + lowercase[ch - 'a'] );
        } else {
            printf("%d\n", num + uppercase[ch - 'A'] );
        }
    }
    return 0;
}

* 注:在 HUST 的 Virtual Judge 上测试 AC

你可能感兴趣的:(水题练习)