首字母问题我很好奇为什么会错

img

img

#include
int main()
{
char ch;
int k;
k=0;
while((ch=getchar())!='\n'){
if(k==1&&ch>='a'&&ch<='z'){
ch=ch-32;
k=0;
}
if(ch==' '){
k=1;
}putchar(ch);
}return 0;
}
为什么会错啊,求解答一下555(输出结果就是和要求一样的但系统就是判定错误)

因为你不审题呀
题目告诉你有标点了,你只判断空格,那不是把标点当词语的一部分了

你用scanf("%s",方式接收字符串就可以了,会自动根据空格拆分出单词,然后将将第一个字符改为大写就行了

#include <stdio.h>
int main()
{
    char s[100],c;
    int n=0;
    do
    {
        scanf("%s",s);
        if(s[0]>='a' && s[0]<='z')
            s[0]-=32;
        if(n==0)
            printf("%s",s);
        else
            printf(" %s",s);
        c= getchar();
        n++;
    }while(c!='\n');
    return 0;
}