c primer plus书本上疑似错误

img


这个第八题第二个if是不是少了个等于号,==才是检验条件。
如果只有一个=,那么程序将会循环运行:每到第二个if,此时age就会被赋值65。检验while入口条件后符合age加1变成66然后进入第二个if后赋值65如此循环,在理吗?

你说的对, = 是赋值语句, 非0的值 结果都是真。 == 才是 比较

【以下回答由 GPT 生成】

问题的解答在书本中的代码可能确实存在问题,你的理解是正确的。在代码中,如果只有一个"="进行赋值操作而没有条件判断,确实会导致age的值无限循环。正确的代码应该在条件判断时使用"==",即判断两个值是否相等。以下是修正后的代码示例:

#include <stdio.h>

int main() {
    int age = 20;
    while (age++ <= 65) {
        printf("Happy birthday! You are now %d years old!\n", age);
        if (age % 20 == 0) {
            printf("Congratulations! You have reached a multiple of 20!\n");
        }
    }
    return 0;
}

在上述代码中,使用"=="来判断age的值是否等于65。这样,当age达到等于65时,循环条件将不再满足,循环结束。在循环体内部使用"% "操作符来判断是否为20的倍数。这样,当age达到20的倍数时,将会输出一条祝贺消息。

如果你发现其他问题,你可以尝试自己查找错误并尝试修正,或者提供更多的信息以便我们帮助你解决问题。



【相关推荐】


  • 这篇博客: C Primer Plus 第六章 复习题&编程练习 答案中的 13. 编写一个程序,创建一个包含8个元素的int类型数组,分别把数组元素设置为2的前8次幂。使用for循环设置数组元素的值,使用do while循环显示数组元素的值。 部分也许能够解决你的问题。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^