繁体   English   中英

我无法结束C中的循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM