【问题标题】:Average Word Length [C]平均字长 [C]
【发布时间】:2015-03-12 02:13:11
【问题描述】:

我看不出我的逻辑在代码中哪里有缺陷,出于某种原因,即使 ch 不等于 32,它也会将 1 添加到 i

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;
}

【问题讨论】:

  • = 替换为==。完成。
  • 帮助避免此错误的一种方法是始终说32 == ch,而不是你如何拥有它。然后,如果您忘记了一个=,则会出现错误或警告,因为您无法将ch 的值分配给32
  • 一个适当的编译器,具有适当的编译器设置,会指出这个错误。
  • @FCo:宁可使用正确的编译器设置,例如使用 gcc、-Wall 和 -Werror,这会产生编译时错误。
  • @Étienne 是的,你是对的。

标签: c


【解决方案1】:

if (ch = 32) 是个问题,因为您将 ch 设置为 32。您应该改用等于运算符 if (ch == 32)

here.也回答了类似的问题

【讨论】:

    【解决方案2】:

    要进行比较,您必须使用== 而不是=。此时您将 ch 设置为 32,因此返回值始终为 true。

    【讨论】:

    • 解决了您的问题吗?
    猜你喜欢
    • 1970-01-01
    • 2016-01-13
    • 2023-03-22
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    相关资源
    最近更新 更多