为什么小写可以被转换,大写不能? 从键盘输入一行字符,如果是小写字母,转换成大写字母输出;如果是大写字母,转换成小写字母输出;其它字符转换成*号输出。

问题遇到的现象和发生背景

从键盘输入一行字符,如果是小写字母,转换成大写字母输出;如果是大写字母,转换成小写字母输出;其它字符转换成*号输出。

用代码块功能插入代码,请勿粘贴截图
#include
#include
int main()
{
    char a[100];
    int count = 0;
    int i, j;
    gets(a);
    count = strlen(a);
    for (i = 0; i < count; i++)
    {
        if (a[i] >= 65 && a[i] <= 90)
        {
            a[i] += 32;
        }
        if (a[i] >= 97 && a[i] <= 122)
        {
            a[i] -= 32;
        }
        else
            a[i] = '*';
    }
    for (j = 0; j < count; j++)
    {
        printf("%c", a[j]);
    }

    return 0;
}

运行结果及报错内容

小写被转换成了大写,但是大写没有被转换成小写

img

img

我的解答思路和尝试过的方法

应小写转换成大写,大写转换成小写。但是程序只转换了小写

if (a[i] >= 97 && a[i] <= 122)
改为
else if (a[i] >= 97 && a[i] <= 122)
否则上面的if判断大写字符时,加上32变为小写字符。你这里又是if的话,又会满足条件,结果又减去32变成小写的了。所以要用else if

第二个if改成else if
两个if都会执行,先执行第一个if变成小写的,此时也满足第二个if,继续执行,+了32,又变回大写了
所以得用if,else if,else
有用记得采纳呐