2016-11-07 80 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男孩是我們同步。剛剛編輯它。 –

+1

也許你應該從當前的餘額中扣除... –

回答

2

嘗試這種情況:

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

在C/C++,編譯器決定以何種順序則計算參數當一個函數被調用。絕對不能保證訂單將從第一個到最後一個參數。所以最有可能在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)。這最後一個應該作爲y作業不依賴於x。如果它不適合你,那只是你以錯誤的方式做你的操作。使用調試器來查看發生了什麼。

+0

兄弟, 感謝您的回覆。 但是輸出仍然與餘額一樣仍然不能扣除。 – Addison

+0

另外根據提問者的說法,他可能希望x = x * i在x初始化後插入。 – Nonanon

+0

其實我只是想我的「y」被扣除。感謝您的回覆。 – Addison

1

該問題可能與功能參數的評估順序有關。在y = totalFee-x之前,您無法知道或認爲x=totalFee/installment已被執行。另外,在表達式中使用賦值通常是不好的做法。

嘗試在循環主體更改爲:

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

也許你不`噸瞭解你的循環

突然想到一步到位呢。

首先, 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

你做X這100

+0

你不能假定循環是這樣執行的。 – Lundin

+0

行..非常感謝 – Addison

0

程序爲您所需的輸出

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

感謝您的所有幫助..我真的很感激它。願上帝保佑你們。 – Addison