我正在努力解决这个问题(首先在JavaScript中),稍后我将不得不转换为C for CS50,但我的输出在第二个if语句后被卡住了。在一个想法场景中,问题一直有效,直到它达到0.问题是在其中一个条件没有得到满足时跳转到下面的if / else语句......但我不确定为什么不进行计算。
function greedy(){
var change = prompt("How much do I owe you? ");
var counter = 0;
var div, rem;
var quarter = 0.25;
var dime = 0.10;
var nickel = 0.5;
var penny = 0.1;
if (change > quarter){
div = Math.floor(change / quarter);
rem = parseFloat((change % quarter).toFixed(3));
counter += div;
console.log(counter);
console.log(rem);
}
if (rem > dime && rem !== 0){
div = Math.floor(rem / dime);
rem = parseFloat((rem % dime).toFixed(3));
counter += div;
console.log(counter);
console.log(rem);
}
else if (rem > nickel && rem !== 0){
div = Math.floor(rem / nickel);
rem = parseFloat((rem % nickel).toFixed(3));
counter += div;
console.log(counter);
console.log(rem);
}
else if (rem > penny && rem !== 0) {
div = Math.floor(rem / penny);
rem = parseFloat((rem % penny).toFixed(3));
counter += div;
console.log(counter);
console.log(rem);
} else {
console.log(counter);
}
}
greedy();

答案 0 :(得分:2)
乍一看,这些都是错误的:
var nickel = 0.5;
var penny = 0.1;
修正:
var nickel = 0.05;
var penny = 0.01;
答案 1 :(得分:0)
如果您正在尝试检查更改时的第二个if语句的条件>然后在1st if语句中插入第二个if语句。对于变化< quarter在第一个else语句中插入第二个if语句。
答案 2 :(得分:0)
1)将其转换为美分并使用整数运算。它可能不会在javascript中字节,但在C中肯定会。
2)镍为0.05,而不是0.5,并且便士为0.01
3)否则,如果,应该是。最后一个应该是if(rem!== 0)。
4)所有>比较应该是> =。例如。 if(rem> dime&& rem!== 0)实际应该是if(rem> = dime&& rem!== 0),否则25美分将被给予2角钱和镍币,不是一个四分之一。