此程序为什么无输出?

img

img

img

你的c=getchar() 没带括号,=的优先级没getchar() != '\n' 高,所以读入的都是乱码。
然后循环结束要加个’\0'因为getchar的读入不会自己加,于是你的for循环就会出问题。
写一串不如直接一个gets(str)搞定。

int main() {
    int i = 0, c;
    int word;
    char str[200];
    word = 1;
    //gets(str);
    while (((c = getchar()) != '\n')) {
        str[i++] = c;
    }
    str[i] = '\0';
    for (i = 0; str[i] != '\0'; i++) {
        if (word == 1) {
            if ('a' <= str[i] <= 'z') {
                str[i] = str[i] - 32;
                printf("%c", str[i]);
            }
        }
        if (str[i] == ' ')
            word = 1;
        else
            word = 0;

    }
    printf("\n");
}

int main ()
{
int i;
int word;
char str[200];
while(gets(str)!=NULL)
{
word=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
word=0;
}
else if(word==0)
{
word=1;
if(str[i]>='a'&&str[i]<='z')
{str[i]=str[i]-32;
}
printf("%c",str[i]);
}
}
printf("\n");
}
return 0;
}