c-转换字符大小写的程序



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

其他人本质上说的是你想要这样的东西(从下到上逻辑中的"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;
}  

更改线路

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

带有

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

因为这个条件与您在问题

中所说的相反

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

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

稍后,当您更熟悉编程并开始执行更大的项目时,您应该使用该语言的内置函数来处理字符串和字符,如islower()isupper()。如果您需要支持任何非英语字符,您应该阅读这篇关于编码国际字符的复杂性的好文章。

相关内容

最新更新