2016-11-07 8 views
-3

私のCプログラムは出力を表示しません。Cプログラムは出力を表示できません

C言語での私のコード:

int x = 0; // Installment 
int y = 0 // Balance 

for (i=1; i<=installment;i++) 
     { 
      printf("%d %d %d\n", i, x=totalFee/installment, y = totalFee-(totalFee/instalment)); 
     } 

正しい出力:

 
Total fees: 300 
Month Installment Balance 
    1  100   200 
    2  100   100 
    3  100   0 

マイ出力:

 
Total fees: 300 
Month Installment Balance 
    1  100   200 
    2  100   200 
    3  100   200 

これは、コードのほんの一部です。これは私が問題がある部分です。他の部品は問題ありません。

+2

Cでプログラミングする場合、なぜC++タグを追加しましたか? –

+0

@Someprogrammerdude Boyは同期しています。ちょうどそれも編集しました。 –

+1

多分あなたは現在の残高から差し引かなければならないでしょう... –

答えて

2

はこれを試してみてください:C/C++で

for (i=1; i<=installment;i++) 
{ 
    x = totalFee/installment; 
    y = totalFee-x; 
    printf("%d %d %d\n", i, x, y); 
} 

を、コンパイラは、関数が呼び出されたときのパラメータを評価して注文することを決定。注文が最初のパラメータから最後のパラメータになるという保証は全くありません。したがって、ほとんどの場合、x = totalFee/installmentの前にtotalFee-xと評価されていますが、それはあなたが期待したものではありません。

Compilers and argument order of evaluation in C++またはOrder of evaluation in C++ function parametersまたはさらにfunction parameter evaluation orderを参照してください。 特に、this answerをチェックしてください。

あなたの投稿が更新され、y = totalFee-xで置き換えられました。y = totalFee-(totalFee/instalment)です。この最後の1つはyという割り当てがxに依存しないために動作するはずです。それがあなたのために働かないなら、それは間違った方法であなたの操作をしているということだけです。何が起きているのかを見るには、デバッガを使います。

+0

Bro、 ご返信ありがとうございます。 しかし、まだ残高と同じ出力は減算できません。 – Addison

+0

また、質問者からは、xの初期化の後にx = x * iが挿入されることが必要と思われる。 – Nonanon

+0

実際に私は "y"を差し引くだけで駄目です。お返事をありがとうございます。 – Addison

1

問題は、関数パラメータの評価順序に関連している可能性があります。 x=totalFee/installmenty = totalFee-xの前に実行されていることはわかりません。また、式の中で代入を使用することは、一般に悪い習慣です。

はあなたにループ本体を変更してください:

x = totalFee/installment; 
y = totalFee-x; 
printf("%d %d %d\n", i, x, y); 
0

多分あなたは

let`sがそれをステップあなたのループを理解し `tを。

まず、 I = 1、X = 3分の300 = 100、Y = 300から100 = 200

次に、 I = 2、X = 3分の300 = 100、Y = 300から100まで= 200

第三、 I = 2、X = 3分の300 = 100、Y = 300から100 = 200

あなたがそれ100

+0

ループがこのように実行されることは想定できません。 – Lundin

+0

OK ..ありがとうございました – Addison

0

あなたに必要な出力

ためのプログラム作りのx
for (i=1; i<=installment;i++) 
{ 
    x = totalFee/installment; 
    y = totalFee-(x * i); 
    printf("%d %d %d\n", i, x, y); 
} 
+0

すべてのおかげで本当にありがとうございます。神様が皆さんを祝福してください。 – Addison

関連する問題