计算器。我是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表中的最后一个条目?
答案 0 :(得分:1)
打印前改变海拔高度。
while (altitude > 0){
distance = ((0.5 * acceleration) * (time * time));
altitude = altitude - distance;
if (altitude <= 0){
altitude = 0;
}
printf("%d %d\n", time, altitude);
time++;
}
答案 1 :(得分:1)
导致这种情况的问题是您的采样间隔:您以一秒的增量进行,因此您的程序会计算到负高度的下降。您应该稍微更改一下代码:
while (altitude > 0){
distance = ((0.5 * acceleration) * (time * time));
if (altitude < distance) {
break;
}
altitude = altitude - distance;
printf("%d %d\n", time, altitude);
time++;
}
这不会打印物体撞击地面的时间。您应该在循环后使用剩余高度,速度(acceleration*time
)和acceleration
进行此计算,并求解剩余时间的等式,得到代表秒数的分数。
答案 2 :(得分:0)
在将高度设置为0之前打印出高度。由于您的公式假定时间间隔为1秒,打印出来的是当时的高度。因此,如果你从20英尺处掉落一个物体,1秒钟之后它会在4英尺处,在2英尺处--60英尺处 - 它撞击地面的时间实际上是1.25秒。