对于字母 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)。
思路二:
弄两个数组,一个存大写,一个存小写。其余见代码。(现在觉得这个方法略蠢)
#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