2017-03-18 70 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