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