问题:使用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;
}本文出自 “ryanscn” 博客,请务必保留此出处http://ryanscn.blog.51cto.com/2725212/1612656
原文地址:http://ryanscn.blog.51cto.com/2725212/1612656