問題:使用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; }