简单无限while循环--c
我知道我应该自己调试这个。。。但是相信我,我试过了,我很尴尬。我不明白为什么我的while循环是无限循环的。有人能帮忙吗简单无限while循环--c,c,while-loop,infinite-loop,C,While Loop,Infinite Loop,我知道我应该自己调试这个。。。但是相信我,我试过了,我很尴尬。我不明白为什么我的while循环是无限循环的。有人能帮忙吗 #include <stdio.h> int main ( void ) { double milesDriven; double gallonsUsed; double totalMilesDriven; double totalGallonsUsed; float milesPerGallon; float t
#include <stdio.h>
int main ( void )
{
double milesDriven;
double gallonsUsed;
double totalMilesDriven;
double totalGallonsUsed;
float milesPerGallon;
float totalMpG;
printf( "%s", " Enter the gallons used (-1 to end): " );
scanf( "%i", &gallonsUsed);
printf( " Enter the miles driven: " );
scanf( "%i", &milesDriven);
while ( gallonsUsed != -1 || milesDriven != -1)
{
totalGallonsUsed += gallonsUsed;
totalMilesDriven += milesDriven;
milesPerGallon = ( milesDriven / gallonsUsed );
printf( " The miles/gallon for this tank was %f\n", milesPerGallon );
printf( "%s", " Enter the gallons used (-1 to end): " );
scanf( "%i", &gallonsUsed);
printf( " Enter the miles driven: " );
scanf( "%i", &milesDriven);
}
totalMpG = ( totalMilesDriven / totalGallonsUsed );
printf( " The overall average miles/gallon was %.6f\n ", totalMpG);
return 0;
}
#包括
内部主(空)
{
双英里驱动;
双加仑;
双总里程驱动;
双总加仑;
漂浮牛奶;
浮动总mpg;
printf(“%s”,“输入使用的加仑数(-1到结尾):”;
scanf(“%i”和“gallonsUsed”);
printf(“输入行驶里程:”);
扫描频率(“%i”和milesDriven);
同时(加仑行驶!=-1 | |英里行驶!=-1)
{
总加仑消耗量+=加仑消耗量;
总行驶里程+=行驶里程;
milesPerGallon=(行驶英里/加仑);
printf(“此油箱的英里/加仑为%f\n”,milesPerGallon);
printf(“%s”,“输入使用的加仑数(-1到结尾):”;
scanf(“%i”和“gallonsUsed”);
printf(“输入行驶里程:”);
扫描频率(“%i”和milesDriven);
}
totalMpG=(总行驶里程/总加仑);
printf(“总平均英里/加仑为%.6f\n”,总英里/加仑);
返回0;
}
乍一看,似乎您使用的是浮点数据类型,而实际上您应该使用整数
"%i" // expects an integer
尝试使用
int
数据类型,或者将格式更改为“%lf”
乍一看,似乎您使用的是浮点数据类型,而您应该使用整数
"%i" // expects an integer
尝试使用int
数据类型,或将格式更改为%lf”
在这里,如果用户将输入gallonsessed=-1和milesDriven=2(假设),则
您的上述情况将是:
while(0 | | 1),相当于while(1)
同样,如果加仑数=2(假设)和英里数=1,则
您的上述情况将是:
while(1 | | 0),这同样相当于while(1)
当加仑数=-1,行驶里程=-1时
然后只有与while(0)=>等价的while(0 | | 0)才能从while循环中出来
现在,如果您看到(galloused=-1和milesDriven=-1)中的任何一个,那么在这种情况下,使用while(galloused!=-1&&milesDriven!=-1)
在这里,如果用户将输入gallonsessed=-1和milesDriven=2(假设),则
您的上述情况将是:
while(0 | | 1),相当于while(1)
同样,如果加仑数=2(假设)和英里数=1,则
您的上述情况将是:
while(1 | | 0),这同样相当于while(1)
当加仑数=-1,行驶里程=-1时
然后只有与while(0)=>等价的while(0 | | 0)才能从while循环中出来
现在,如果您认为如果(gallonUsed=-1和milesDriven=-1)中的任何一个,那么在这种情况下,使用while(galloussed!=-1&&milesDriven!=-1)也许您希望| |&?另外,scan(“%i”)参数是双精度的。不是整数。可能您希望scanf(“%lf”,…)可能您希望| |成为&?此外,scan(“%i”)参数是双精度的。不是整数。可能您需要scanf(“%lf”,…)
-1
是可以精确表示的值之一,尽管您的小心警告很贴切,但它与此特定情况无关。但是,+1,因为你几乎肯定解决了这个问题。@paxdiablo是的,老实说,我没有检查。我会编辑我的回答谢谢!我承认,我是C的新手,所以我不知道双倍的%lf-1
是可以精确表示的值之一,虽然您的小心警告很贴切,但它与此特定情况无关。但是,+1,因为你几乎肯定解决了这个问题。@paxdiablo是的,老实说,我没有检查。我会编辑我的回答谢谢!我承认,我是C的新手,所以我不知道双倍的%lf!