问题:使用C语言把字母转换成大写,不能使用库函数。


这个题目可以考查编程的一些基本素养,例如命名与可读性、函数的使用、非预期输入的处理、简单的算法、使用有意义的表达式而不是magic bumber.

关于代码的正确性:我当时犯错的有用了||而不是&&,没有考虑等于a、z的边界条件,输入非字母时应该原样返回,应计算输入与a的差然后在A加上这个差即可。

经过修改,我的代码如下。更完整更优秀的解答见http://zh.lucida.me/blog/from-wuxia-to-programmer-interview/

#include <stdio.h>
char upper (char);

int main(){
    char input ,output;
    scanf("%c",&input);
    output = upper(input);
    printf("%c",output);
    return 0;
}

char upper(char input){
    if ('a' <= input&&input >='z'){
        return input-'a'+'A';
    }
    return input;
}