C语言编程 零钱兑换

C语言编程 零钱兑换将k元钱换成1元,1角,5角的硬币共计40枚,输出有多少兑换方法,k从键盘输入。

有没有大神能告诉我一个正确写法或者帮我查一下错?

题目我没怎么看懂,比如说你写的i+j+l==k,那题目中的40放在哪里?
另外我要说的一个大问题,也是就是float的用法,float的值是小数,电脑的算法是近似值。
举个例子,
float a = 1;
b = a/10;
按道理b此时是0.1,但是你输出的由于编译器的不同有可能是 0.10000000000001,也有可能是0.09999999999999.也有可能是0.1。当出现这种情况,你的if中的判断就永远不会实现。
所以你的if可以比较大小判断,比如if(x==5)写成((x>4.9999)&&(x<5.00001))或者不要出现float,所有的数值乘以10,把小数去除。追问

您好,我已经将程序按照您的想法改了,但是现在依旧算不出正确答案。40是总硬币数,k是总钱数,希望您能再帮我看一看

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-23
前面的几个 for 都没有问题;
最内层for里面的 if() 语句块;
i+ j+l = k 改成 i+j+l = 40;追问

我按照您的想法改正了,依旧算不出正确答案,麻烦您看一眼谢谢

相似回答