【发布时间】:2014-06-24 11:19:11
【问题描述】:
我正在根据书本执行以下程序,但不明白我哪里出了问题。有人可以向我指出我遗漏的一些逻辑错误吗?
开发一个程序,输入每罐的行驶里程和加仑数。 该程序应计算并显示每加仑油所获得的英里数。处理完所有输入信息后,程序应计算并打印所有满罐的每加仑英里数。
#include <stdio.h>
int main(void) {
int total = 0, count = 0;
float gallons_used, mpg, miles;
while(gallons_used != -1) {
printf("Enter the gallons used (-1 to end): ");
scanf("%f", &gallons_used);
printf("Enter the miles driven: ");
scanf("%f", &miles);
mpg = miles / gallons_used;
printf("Miles / gallon for this tank was %f\n", mpg);
total += mpg;
count++;
}
total /= count;
printf("Average miles to the gallon was: %d\n", total);
return 0;
}
现在,看来我的循环恰到好处,直到我以 -1 的值退出它,因为它仍然要求该油箱的里程,显然输入它会完全抛出总和结束。
【问题讨论】:
-
那是因为你没有在从用户那里读取到 gallons_used 之后就退出。在此之后放置一个 break 语句,而不是在 while 条件中。
-
您检查了
gallons_used的值,但您从未初始化它!如果它恰好以值-1开头怎么办?? -
或者至少只检查
gallons_used < 0,如果是,则跳出循环 -
我不推荐这种与浮点类型的比较......它有时会给你带来麻烦,在某些情况下将浮点数与整数进行比较可能会导致一些错误,通常在使用浮点数比较时是:if(abs((float_variable - value)
标签: c