我正在编写一个程序,如果用户输入一个小写字符,则生成其大写字符,反之亦然。我使用一个函数来根据ASCII表将字符转换为小写或大写。小写到大写的转换正确,但大写到小写的转换不正确。
char changeCapitalization(char n)
{
//uppercase to lowercase
if(n>=65 && n<=90)
n=n+32;
//lowercase to uppercase
if(n>= 97 && n<=122)
n=n-32;
return n;
} 发布于 2015-04-01 02:18:59
其他人本质上是想要这样的东西(从下到上逻辑上的‘else if’而不是'if‘):
char changeCapitalization(char n)
{
if(n>=65 && n<=90) //uppercase to lowercase
n=n+32;
else if(n>= 97 && n<=122) //lowercase to uppercase
n=n-32;
return n;
} 发布于 2015-04-01 02:12:00
按顺序执行两个if语句。因此,如果您有一个大写字符,它将首先转换为小写,然后,下一条if语句将把它转换回小写。如果只想在第一个条件不为真的情况下检查第二个条件,请将else放在第二个if之前。
此外,您可以相互比较字符:if (n >= 'A' && n <= 'Z'),而不是直接使用ASCII码。
稍后,当您更熟悉编程并开始进行更大的项目时,您应该使用该语言的内置函数来处理字符串和字符,例如islower()和isupper() -如果您需要支持任何非英语字符,则应该阅读此great article on the intricacies of encoding international characters。
发布于 2015-04-01 02:21:57
更改线路
if(n>= 97 && n<=122)使用
else if(n>= 97 && n<=122)因为这种情况与你在问题中所说的相反
https://stackoverflow.com/questions/29375481
复制相似问题