2017-03-18 90 views
-3

我做了一些實驗,拉出我的頭髮來找出解決方案,請幫助!循環在C增加值

#include <stdio.h> 

int main() { 
    int USD , JPY; 
    int lower,upper,skip; 

    lower = 1; 
    upper = 1000; 
    skip = 50; 

    USD = lower; 
    while (USD <= upper) { 
    JPY = USD * 114; 

    printf("%d\t\%d\n", USD, JPY); 
    USD = USD + skip; 

    } 

} 

結果:

1  114 
51  5814 
101  11514 
151  17214 
etc 

我的預期結果是低於:

1   114  
50  5700  ----> incremented by 49 
100  11400  -----> incremented by 50 
150  17100  -----> incremented by 50 and same with the rest, all incremented by 50 
+1

如指出你怎麼能如果你總結50 + 1,預計結果爲50? – Jackowski

+2

'USD = USD + skip - (USD == lower);' – pmg

+0

@pmb wowww這是超快的,謝謝bro。你是天才男人! – user4951761

回答

0

,你所得到的結果,根據你的代碼是正確的。這是因爲,最初USD = 1,在第一次迭代中,當您做USD = USD +跳過時,實際上意味着USD = 1 + 50 = 51。 在第二迭代結束時,USD = 101因爲USD =在所有其他迭代USD與50

增加爲了得到其中您所期望的結果51 + 50,類似地,必須更換USD = USD +50與你的循環如下代碼:

if(USD==1) 
    USD=USD+49; 
else 
    USD=USD+50; 

通過執行此,您將得到預期的答案

+0

謝謝@Dhruvi Goyal – user4951761

0

永遠不會忘記在問quenstion調試運行的動力。每當你看到輸出與預期不同時,只需調試即可。

#include <stdio.h> 

int main() { 
    int USD , JPY; 
    int lower,upper,skip; 

    lower = 1; 
    upper = 1000; 
    skip = 50; 

    USD = lower; 
do { 
    JPY = USD * 114; 

    printf("%d\t\%d\n", USD, JPY); 
    USD = lower * skip; 
lower ++; 
    } while (USD <= upper); 
+0

對不起人,剛學習C在我40歲的時候,還是初學者,第1章和第2章,甚至都不懂如何調試,還是寶貝步 – user4951761

1

嘗試

USD = USD + skip - (USD == 1); 

這工作時lower爲1 如果你想讓它一般爲每lower需要,通過@EOF

USD = USD + skip - (USD == lower ? lower : 0); 
+0

謝謝我的男人 – user4951761