c-cant printf成本

时间:2012-11-12 07:14:09

标签: c printf scanf

#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程序的新手,希望可以得到帮助。感谢

5 个答案:

答案 0 :(得分: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);

out put he cost is :address

所以试试

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

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

答案 1 :(得分: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;

答案 2 :(得分:1)

使用以下代码:

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

您将打印地址到my_var,即:它存储在内存中的位置。不是变量的值。我认为你弄得很困惑,因为你的scanf需要一个指向你想要更新的值存储位置的指针。做一些关于指针的阅读,它会更清晰一些。现在的解决方法是将printf语句更改为:

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

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

答案 3 :(得分:0)

您需要进行2次更改

 gallon = 3.785*L;

需要移到scanfs

之下

第二次更改是打印cost而不是&cost

答案 4 :(得分:0)

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

并删除'&amp;'来自printf声明。 这次肯定会有用。