c语言改错,就就俺吧

我是初学者,改错,但是我的确看不出错在哪里
程序改错
1.下列程序的功能为:将输入的小写字母改写成大写字母输出,其他字符不变,请纠正程序中存在的错误,使程序实现其功能。
#include
int main()
{
char ch;
scanf("%c",&ch);
ch=(ch>='a'&&ch<='z')?(ch+32):ch;
printf("%c\n",ch);
return 0;
}

ch = (ch >= 'a' && ch <= 'z') ? (ch - 32) : ch; // 加改成减
ch = (ch >= 'a' && ch <= 'z') ? (ch - ('A' - 'a')) : ch; // 这样子也是不错的

#include <stdio.h>
int main() {
    char ch;
    scanf("%c", &ch);
    ch = (ch >= 'a' && ch <= 'z') ? (ch - 32) : ch; // 加改成减
    //ch = (ch >= 'a' && ch <= 'z') ? (ch - ('A' - 'a')) : ch; // 这样子也是不错的
    printf("%c\n", ch);
    return 0;
}

输入的是字符串的话,如果不包括空格的话,就用下面的

#include <stdio.h>
int main() {
    char ch[100];
    scanf("%s", ch);
    for ( int i = 0 ; ch[i] != '\0' ; i++ ) {
        ch[i] = (ch[i] >= 'a' && ch[i] <= 'z') ? (ch[i] + ('A' - 'a')) : ch[i];
    }
    printf("%s\n", ch);
    return 0;
}

ch=(ch>='a'&&ch<='z')?(ch-32):ch;