[英]I'm having trouble ending a loop in C
我在学校学习C。(我不要求任何人为我写这篇文章)。
分配
输入您使用的加仑数和行驶的英里数后,此程序将为您计算三个汽油箱的英里/加仑MPG 。
我可以让我的程序开始循环,但是我无法弄清楚如何使其在运行3次后结束循环并为我提供3辆坦克的平均MPG。 运行该程序可以得到平均水平,但会一直询问下去。
#include <stdio.h>
int main(void) {
int miles;
float gallons = -1, mg, overall = 0, avg = 0;
while(gallons != 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;
}
return 0;
}
试试这个小的变化。 使用迭代器平均获得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;
}
抱歉 :我没有看到gallons
是如何在您的代码中分配/初始化的,我看到了float galons
while (gallons != 0)
和while (gallons != 0)
,然后认为gallons
在某种程度上是计算结果。
我认为这个答案仍然有用。
不要使用float
值检查条件,因为它们的机器表示不正确,所以float
s是不准确的,因此gallons != 0
几乎不可能是真实的,而是使用int
并且循环控制将正常工作。 仅将float
用作平均值。
但实际上,由于可以使用for
循环解决特定的问题,因此应使用
for (int i = 0 ; i < 3 ; ++i)
而是,您知道它只会循环3次。
旁注 :了解有关scanf()
更多信息,以及为什么必须检查它在诸如您的程序中重新调整的值的原因。
如您所写,您的程序不会停在3辆战车上。 它将持续询问油箱,直到您对使用的加仑数回答0。
要使其最多读取三个水箱,请将for (int i = 0; i < 3; i++)
替换while (gallons != 0)
for (int i = 0; i < 3; i++)
。 这将使主循环仅运行3次。
但是,那样就不会打印出总体平均值。 运行3次后,它只会退出。 显示总体平均值的代码在if
测试中,该测试检查您是否键入了0加仑。 if
测试, if
删除,然后将显示总体平均水平的printf
语句移至程序结尾附近,就在return
语句之前。 这样,它将在for
循环运行3次之后运行。
float gallons = -1;
这没有任何意义; 您需要注意一件事
while(gallons!=0){
//code
}
您正在要求用户输入要输入的加仑值,并且不更改它的值,因此该值在while期间将始终为true,并且循环将变为无限。
如果需要运行三次循环,则可以使用变量来执行。 `
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;
}
`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.