有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母。 输入描述: 多组输入,每一行输入一个字母。 输出描述: 针对每组输入,输出单独占一行,输出字母的对应形式。

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include<stdio.h>
int main()
{
    char ch;
    scanf("%c",&ch);
    ch=(ch>='A'&&ch<='Z')?(ch+32):(ch-32);
    printf("%c\n",ch);
    return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

输入
a
A
Z
输出
A
a
z

#include <stdio.h>
#include <ctype.h>

int main()
{
    char ch;
    while (scanf("%c", &ch) == 1)
    {
        if (ch == '\n')
            continue;
        if (islower(ch))
            ch = toupper(ch);
        else
            ch = tolower(ch);
        printf("%c\n", ch);
    }
    return 0;
}