首页 > 解决方案 > 通过使用 while 循环,C 程序未在整数计数 150 处退出的问题

问题描述

我想知道是否可以就我遇到的问题获得一些帮助。

基本上,当人数达到 150 时,我试图通过使用 while 循环来结束我的程序。

我的数学似乎是对的,但由于某种原因,程序在人数达到 276 时结束。

任何人都可以帮助解决这个问题吗?谢谢!

代码输入:

int main () { 
    // declare variables
    int weeks=0, people=5;
    while (people < 150) {
        weeks++;
        people=(people-weeks)*2;
        printf("On week %d Professor Rabnud's Social Media Group has %d people\n", weeks, people);
    } 
    // end program
    return 0; 
}

代码输出:

On week 1 Professor Rabnud's Social Media Group has 8 people
On week 2 Professor Rabnud's Social Media Group has 12 people
On week 3 Professor Rabnud's Social Media Group has 18 people
On week 4 Professor Rabnud's Social Media Group has 28 people
On week 5 Professor Rabnud's Social Media Group has 46 people
On week 6 Professor Rabnud's Social Media Group has 80 people
On week 7 Professor Rabnud's Social Media Group has 146 people
On week 8 Professor Rabnud's Social Media Group has 276 people

标签: c

解决方案


int main () { 
    // declare variables
    int weeks=0, people=5;
    while (people < 150) {
        weeks++;
        people=(people-weeks)*2;
        printf("On week %d Professor Rabnud's Social Media Group has %d people\n", weeks, people);
    } 
    // end program
    return 0; 
}

如您所见,当week == 7thenpeople == 146因为146 < 150is时true,循环再次执行。首先,它week现在增加week == 8,然后,它计算people(146 - 8) * 2 == 276,所以people现在276然后它执行了printf()语句。只是现在, 276 < 150is false,然后循环终止。

因为我们知道什么时候week == 1可以people == 8这样做:

int main () { 
    // declare variables
    int weeks=1, people=8;
    while (people < 150) {
        printf("On week %d Professor Rabnud's Social Media Group has %d people\n", weeks, people);
        weeks++;
        people=(people-weeks)*2;
    } 
    // end program
    return 0; 
}

推荐阅读