【发布时间】:2012-03-17 14:17:09
【问题描述】:
堆栈溢出。我是 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?
【问题讨论】:
-
强烈建议:单步调试器下的代码,看看“高度”和“距离”是如何随着循环迭代而变化的。我想你很快就会发现问题;)
-
distance = ((0.5 * acceleration) * (time * time));始终计算为0sincetime=0。 -
如果您希望程序不打印负数,请将您的条件(
if语句)移到printf()之前。 -
@Als
time在循环中是递增的,所以在第一次迭代后它变为非零。
标签: c loops for-loop while-loop