0
#include <stdio.h>
#include <conio.h>

int main()
{
 float L=0; //L is litre
 float gallon;
 gallon = 3.785*L;
 char input;
 float cost;

 printf("Hello, welcome to PetrolUpHere!!\n");
 printf("Would u like unleaded or diesel fuel?");
 scanf("%c", &input);
 printf("Enter the litre you want to fuel:");
 scanf("%f", &L);

 switch (input) {
 case 'u' :
 cost = 1.98*gallon;
 printf("The cost is :%f ",&cost);
 break;

 case 'd' :
 cost = 1.29*gallon;
 printf("The cost is :%f ",&cost);
 break;
 }

 getch();
 return 0;
 }

该程序无法显示成本结果,仅在我完成输入 scanf 语句和 L 值后才显示成本 = 0.0000。我是c程序的新手,希望能得到帮助。感谢

4

5 回答 5

1

您已经将 L 乘以计算加仑

float L=0; //L is litre
 float gallon;
 gallon = 3.785*L;  //here gallon is zero already 

所以你会得到

printf("The cost is :%f ",&cost);

输出he cost is :address

所以试试

 gallon = 3.785*L; // try this here 
 switch (input) {  

printf("The cost is :%f ", cost);
于 2012-11-12T07:17:55.240 回答
1

我认为这是问题所在,加仑为 0:

 float L=0; //L is litre
 gallon = 3.785*L;

阅读升数后,您应该多次:

float L=0; //L is litre
float gallon=3.785f;
...
//read liters
scanf("%f", &L);
...
cost = 1.98f*gallon*L;
于 2012-11-12T07:17:55.533 回答
1

使用这行代码:

float my_var;
printf("Hi %f", &my_var);

您将把地址打印到 my_var,即:它存储在内存中的位置。不是变量的值。我认为您对此感到困惑,因为您的 scanf 需要一个指向您要更新的值的存储位置的指针。对指针做一些阅读,它会更清楚一些。现在的解决方法是将您的printf陈述更改为:

float my_var;
printf("Hi %f", my_var);

此外,您的加仑线需要在用户输入所有内容后移动,否则您只需在程序开始时将其乘以 0,它将保持为零而不是预期结果。

于 2012-11-12T07:28:17.730 回答
0

您需要 2 处更改

 gallon = 3.785*L;

需要移到所有的下方scanfs

第二个变化是打印cost而不是&cost

于 2012-11-12T07:20:26.080 回答
0

你应该写下语句“gallon = 3.785*L;” 在从用户那里读取 L 之后,其他明智的加仑将变为零,因为 L 被初始化为零。因此,成本的值也变为零。

并从 printf 语句中删除“&”。这次肯定会奏效。

于 2012-11-12T08:06:22.553 回答