当一个变量乘以和除以两位数时,C 停止工作

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    // TODO: Prompt for start size
    int s;
    do
    {
        s = get_int("Start size : ");
    }
    while (s < 9);

    // TODO: Prompt for end size
    int e;
    do
    {
        e = get_int("End size : ");
    }
    while (e < s);

    // TODO: Calculate number of years until we reach threshold
    
    int n = s;
    int y = 0;
    while (n < e) 
    {
        n = n + n / 3 - n / 4 ;
        
        y++;
    }
    
    // TODO: Print number of years
    printf("Years: %i\n",y);

}

我能够完美地运行上面的代码并得到想要的结果。然而,当我尝试通过简化数学来替换 n 的计算部分时,代码停止工作,即它不计算它打算计算的内容并将程序保持在输入模式,即它允许您在终端中输入而不给出输出。我用 n 的计算部分替换了 n = (13 * n) / 12

dhy9062 回答:当一个变量乘以和除以两位数时,C 停止工作

由于整数算术,表达式 n = n + n / 3 - n / 4;n = n * 13 / 12; 不等价:整数除法向零舍入,例如第一个表达式将 n3 递增到 { {1}} 但不是第二个表达式。

你应该使用浮点算法来解决这个问题:

4
本文链接:https://www.f2er.com/794188.html

大家都在问