平均字长[C]
我看不出我的逻辑在代码中哪里有缺陷,出于某种原因,它在平均字长[C],c,C,我看不出我的逻辑在代码中哪里有缺陷,出于某种原因,它在I中添加了1,即使ch不等于32 int main(void) { int ch; float i, j; printf("Enter a sentence: "); for (i = 1, j = 0;;) { ch = getchar(); if (ch == '\n' || ch == EOF) break; if (
I
中添加了1,即使ch不等于32
int main(void)
{
int ch;
float i, j;
printf("Enter a sentence: ");
for (i = 1, j = 0;;)
{
ch = getchar();
if (ch == '\n' || ch == EOF)
break;
if (ch != 32)
j++;
if (ch = 32)
i++;
}
printf("Average word length: %.2f", j/i);
return 0;
}
要进行比较,必须使用
=
而不是=
。此时您正在将ch设置为32,因此返回值始终为真。如果(ch=32)
是问题,因为您将ch设置为32。如果(ch==32)
同样,也回答了类似的问题将
=
替换为=
。完成。避免此错误的一种方法是总是说32==ch
,而不是说你是如何得到它的。然后,如果您忘记了一个=
,则会出现错误或警告,因为您无法将ch
的值分配给32A正确的编译器,如果使用正确的编译器设置,则会指出此错误。@FCo:而是使用正确的编译器设置,例如使用gcc、-Wall和-Werror,这将生成一个编译时错误。@Étienne是的,您是正确的。它解决了您的问题吗?