簡體   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