c语言:将每个单词的首字母改为大写后输出

img


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

#include
int main()
{
    char ch;
    int k;
    k=0;
    while((ch=getchar())!='\n'){
        if(k==1){
            ch=ch-32;
            k=0;
        }
        if(ch==' '){
            k=1;
        }putchar(ch);
        }printf("\n");
}


本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:
输入给出一行字符。

输出格式:
在一行中输出已输入的字符,其中所有单词的首字母已改为大写。

输入样例:
How are you?
输出样例:
How Are You?我想要达到的结果

为什么我最后的结果一致了,但最后系统判断是错误的,555

看示例,第一个词首字母本身大写,不需要转换,k==1处加个判断。