转换字符大写的程序

时间:2015-03-31 18:09:15

标签: c function if-statement char ascii

我正在编写一个程序,如果用户输入一个小写字符,则以大写字母生成其字符,反之亦然。我正在使用一个函数,以便根据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;
}  

3 个答案:

答案 0 :(得分:2)

其他人基本上说的是你想要这样的东西('if 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;
}  

答案 1 :(得分:1)

按顺序执行两个if语句 - 顺序执行。因此,如果您有一个大写字符,它将首先转换为小写,然后,下一个if语句将其转换回小写。如果您只想在第一个条件不成立时检查第二个条件,请将else放在第二个if前面。

此外,您可以直接比较字符,而不是直接使用ASCII代码:if (n >= 'A' && n <= 'Z')

稍后,当您对编程更开心并开始执行更大的项目时,您应该使用语言的内置函数来处理字符串和字符,例如islower()isupper() - 和如果您需要支持任何非英文字符,请阅读great article on the intricacies of encoding international characters

答案 2 :(得分:1)

Chang the line

if(n>= 97 && n<=122)

else if(n>= 97 && n<=122)

因为这种情况与你在问题中所说的相反[/ p>