C语言 计算最少找零钱币数

题目中有0.25,0.10,0.05,0.01四个单位,需要用贪心算法计算最少钱币数。
现在我遇到的问题是输入0.41时,我程序的计算结果是3(正确值为4),仔细检查发现问题出现在0.01这里,问题有两处:
if(change >= 0.01)当change=0.01时,依然不能执行if语句内的代码块
num += change / 0.01当change=0.01时,change/0.01=0.999999,而num是int型
代码截图如下:

求各路大侠相助啊!不胜感激!!!

有两种方法解决试试
1 类型用double 不要用float
2 输入是字符串 然后自己解析
比如输入0.51 那么解出来就是51

谢谢采纳追问

刚刚仔细查看了一下原题,上面明确规定了要使用它提供的GetFloat函数获取值,所以,您提供的这两个解决方案貌似不能用,还有什么办法能解决这个问题吗?

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-16
第2个回答  2014-01-16
double cc;int num;
……
if(change>=0.01)
{
cc+=change/0.01;
}
if(num=(int)(cc+0.5)>cc) return num;
else return (int)cc;
}本回答被提问者采纳

C语言 计算最少找零钱币数
1 类型用double 不要用float 2 输入是字符串 然后自己解析 比如输入0.51 那么解出来就是51 谢谢采纳

编程实现找零钱问题 假设有3种硬币,面值分别是1元、5角和1角。这3种...
int wuJiao=0;\/\/5角硬币的数量 int yiYuan=0;\/\/1元硬币的数量 int moneyCount=n*10;\/\/总金额元化成角 int YiJiao=0;\/\/最少硬币数量中1角硬币的数量 int WuJiao=0;\/\/最少硬币数量中5角硬币的数量 int YiYuan=0;\/\/最少硬币数量中1元硬币的数量 int count=0;\/\/兑换方案数 \/\/三次循环...

c语言找零钱问题,谢谢
1. 首先,用户输入总金额,例如“238元”。2. 接着,程序从最大面值的人民币开始减去,这里是“100元”。3. 用238元减去100元,得到138元。由于结果是正数且不为零,记录100元张数的变量加1。4. 然后,继续用138元减去100元,得到38元。同样地,结果是正数且不为零,记录100元张数的变量再加...

c语言 找零钱问题,谢谢
先输入n值,然后从最大面值的人民币开始减。例如:我有238元 减最大面值的第一个。238-100=138。结果为正数且不为零。然后记录100元张数的变量加1(这些变量都应初始化时为0)继续,138-100=38.结果正数且不为零,同上100面值变量加1,38-100。结果小于零。不再用100面值的减。38-50。...

用C语言编写找零钱问题,谢谢!!
\/\/下面是C语言的,更直观,不需要引用 include <stdio.h> void compute_coins(int coin_value,int number,int amount_left){ if(amount_left >= coin_value)compute_coins(coin_value, number+1, amount_left-coin_value);else{ printf("%d : %d\\n", coin_value, number);switch(coin_value...

c语言 找零钱怎么做
100从0到2遍历 循环最里面判断i1*1+i2*2+i5*5+i10*10+i20*20+i50*50+i100*100和你的输入比较 如果相等输出非零相应数 其他的输入控制写好 输出格式排版什么的写好,其实也挺 简单美观的 计算机就擅长做重复的事,让他跑着玩吧 当然我才学c,知不知道有没有对应的经典算法或经典解法 ...

C语言中什么叫算法,算法在程序设计中的重要作用
例如平时购物找钱时,为使找回的零钱的硬币数最少,不考虑找零钱的所有各种发表方案,而是从最大面值的币种开始,按递减的顺序考虑各币种,先尽量用大面值的币种,当不足大面值币种的金额时才去考虑下一种较小面值的币种。这就是在使用贪婪法。这种方法在这里总是最优,是因为银行对其发行的硬币种类和硬币面值的巧妙安排...

C语言中f=f*n表示什么意思
例如平时购物找钱时,为使找回的零钱的硬币数最少,不考虑找零钱的所有各种发表方案,而是从最大面值的币种开始,按递减的顺序考虑各币种,先尽量用大面值的币种,当不足大面值币种的金额时才去考虑下一种较小面值的币种。这就是在使用贪婪法。这种方法在这里总是最优,是因为银行对其发行的硬币种类和硬币面值的巧妙安排...

C语言中什么叫死循环?怎么避免?
例如在C语言程序中,语句“while(1)printf("*");”就是一个死循环,运行它将无休止地打印*号。产生死循环的情况有:▪ 逻辑错误 ▪ 变量处理错误 ▪ 奥尔德森循环 ▪ 无穷递归 你可以看下这些死循环出现的原因,然后在开发中避免一下。

C语言中 %d之间加了个数字什么作用?
如果是-4 则是%-4d=4 ,后面3个空格···谢谢采纳···d 是个占位符 前面加数字 相当于修饰%d 的宽度是多大 举个例子 main(){ int a=13;printf("%6d",a);} 如果不加6的话 输出结果:13。从冒号到13有0个空格 如果加了6 输出结果: 13,从冒号到13有6个空格 懂...

相似回答