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

このコード行で:

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 に答える
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 に答える
0

「gallon = 3.785*L;」という文を書く必要があります。ユーザーから L を読み取った後、L がゼロに初期化されると、ガロンはゼロになります。したがって、コストの値もゼロになります。

また、printf ステートメントから「&」を削除します。今度は必ず効きます。

于 2012-11-12T08:06:22.553 に答える
0

2 つの変更が必要です

 gallon = 3.785*L;

すべての下に移動する必要がありますscanfs

2 番目の変更点は、印刷costではなく印刷&costです。

于 2012-11-12T07:20:26.080 に答える