我正在尝试创建一个程序,以供用户分配使用的三加仑油箱所使用的加仑和行驶的英里数。我遇到的问题是for循环未正确将输入中寻址的两个值除以第三个值(每加仑平均英里),或者程序未正确寻址输入。但是我仍然是新手,所以我不确定问题出在哪里。
for(i = 1; i <= 3; ++i)
{
/* Define calculations */
/* ------------------- */
ave_miles = miles / gallons;
total_miles = total_miles + miles;
total_gallons = total_gallons + gallons;
total_ave_miles = total_miles / total_gallons;
/* Propmpt user for miles and gallons used and calculate miles per gallon. */
/* ----------------------------------------------------------------------- */
printf("Enter the number of gallons used for Tank #%i: ", i);
scanf("%f", &gallons);
while ( (c = getchar() != '\n') && c != EOF);
printf("Enter the number of miles driven: ");
scanf("%f", &miles);
while ( (c = getchar() != '\n') && c != EOF);
printf("*** The miles per gallons for this tank is %.1f\n\n", ave_miles);
} /* end for loop */
/* Display and calculate the total miles per gallon for the three tanks. */
printf("Your overall average of miles per gallon for three tanks is %.1f\n\n", total_ave_miles);
printf("Thank You for using the program. Goodbye.\n");
} /* end main */
C和C ++没有惰性评估。因此,如果您这样做:
ave_miles = miles / gallons;
scanf("%f", &miles);
scanf("%f", &gallons);
printf("%f\", ave_miles);
它不会给您miles / gallons
的平均值。
相反,第一行将assign用这些变量在特定时刻具有的值除以miles / gallons
(即0.0 / 0.0
,这将产生非数字或[C0 ])。
您要执行此操作:
NaN
现在除法scanf("%f", &miles);
scanf("%f", &gallons);
ave_miles = miles / gallons;
printf("%f\", ave_miles);
将为您提供所有这些变量所保持的平均值。
您可以使用fgets函数进行字符串输入:miles / gallons