我在学校学习C.(我不是要求任何人为我写这篇文章)。
分配
在您输入使用的加仑数和行驶里程后,该程序将为您计算三加仑汽油的每加仑英里数 MPG 。
我可以让我的程序启动一个循环,但我无法弄清楚如何让它在3次运行后结束循环并给我3个坦克的平均MPG。运行程序给了我平均值,但会永远地问。
i
答案 0 :(得分:1)
尝试这个小改动。使用迭代器来获得3个坦克的平均值。
像
一样修改i=0;
while(i < 3) {
i++;
#include <stdio.h>
int main(void) {
int miles, **i=0;**
float gallons = -1, mg, overall = 0, avg = 0;
**while(i < 3)** {
printf("Enter the gallons used: ");
scanf("%f", &gallons);
if (gallons == 0) {
printf("\n\n The overall miles/gallon was: %f\n", overall/avg);
exit(0);
}
printf("Enter miles driven: ");
scanf("%d", &miles);
mg = miles/gallons;
printf("The miles/gallon for this tank was : %f\n", mg);
overall += miles;
avg += gallons;
**i++;**
}
return 0;
}
答案 1 :(得分:0)
抱歉:我没有看到您的代码中gallons
是如何分配/初始化的,我看到了float galons
和while (gallons != 0)
然后认为gallons
1}}在某种程度上是计算的结果。
在我看来,这个答案仍然有用。
不要使用float
值来检查条件,float
不准确,因为它们的机器代表不能,因此gallons != 0
可能很难成为真,使用{相反,{1}}您的循环控件将正常工作。仅使用int
作为平均值。
但事实上,因为你的具体问题可以通过float
循环解决,你应该使用
for
相反,你知道它只会循环3次。
SIDE NOTE :了解有关for (int i = 0 ; i < 3 ; ++i)
的更多信息以及为什么必须检查它在像您这样的程序中重新调整的值。
答案 2 :(得分:0)
你的程序,正如所写,不会停在3辆坦克。它将不断询问坦克,直到你回答0加仑使用的数量。
要使其最多读取三个坦克,请将while (gallons != 0)
替换为for (int i = 0; i < 3; i++)
。这将使主循环仅运行三次。
if
测试内,用于检查您是否输入了0加仑。删除if
测试并移动printf
语句,该语句显示在return
语句之前的程序结束附近的总体平均值。这样它将在for
循环运行3次后运行。
答案 3 :(得分:-2)
float gallons = -1;
它没有任何意义; 你需要注意一件事
while(gallons!=0){
//code
}
您要求用户输入值,如果输入加仑而不更改它的值,那么此值将始终为真,而循环将变为无限。
如果你需要运行循环三次,那么你可以通过使用变量来完成。 `
int i=3;
while(i>0){//code
i--;
}
我在这里编辑了你的程序;
#include <stdio.h>
int main(void) {
int miles,i=3;
float gallons, mg, overall = 0, avg = 0;
while(i>0) {
printf("Enter the gallons used: ");
scanf("%f", &gallons);
if (gallons == 0) {
printf("\n\n The overall miles/gallon was: %f\n", overall/avg);
exit(0);
}
printf("Enter miles driven: ");
scanf("%d", &miles);
mg = miles/gallons;
printf("The miles/gallon for this tank was : %f\n", mg);
overall += miles;
avg += gallons;i--;
}
return 0;
}
`