堆栈溢出。我是C++的新手,我的作业还有最后一个问题。我正在尝试编写一个程序,计算一个物体从基准高度下落的速度,并将该信息显示为物体的高度与下落的时间(以秒为单位)。这是我目前掌握的代码:

#include <stdio.h>

int main() {

    int acceleration, altitude, time;
    double distance;

    acceleration = 32;
    time = 0;

    printf("What is the altitude you are dropping your object from?\n");
    scanf("%d", &altitude);

    printf("Time    Altitude\n");

    while (altitude > 0){
        distance = ((0.5 * acceleration) * (time * time));
        altitude = altitude - distance;
        printf("%d      %d\n", time, altitude);
        time++;
        if (altitude <= 0){
            altitude = 0;
        }
   }

    return 0;
}

我知道距离的方程式有点偏离,但我现在更关心的是,当物体落地时,程序不会打印出0的高度。相反,它打印出-104,由于负距离是不可能实现的,我想解决这个问题。
所以我的问题是:while循环/嵌套if循环有什么问题导致程序无法为表中的最后一个条目打印出0?

最佳答案

打印前改变高度。

while (altitude > 0){
    distance = ((0.5 * acceleration) * (time * time));
    altitude = altitude - distance;
    if (altitude <= 0){
        altitude = 0;
    }
    printf("%d      %d\n", time, altitude);
    time++;
}

10-01 23:06