我将在这里冒险并假设OP正在谈论从交易中退回的钱的变化。
如果是这样的话,那么它可能是家庭作业,所以只有伪代码。
最简单的首次尝试方法如下。让cost
是交易成本并且tendered
是移交的金额(均以美分为单位),让我们进一步假设您的经济只有美元钞票、25 美分硬币和便士(以使我的代码更小)。
change = tendered - cost
if change < 0:
print "Pay up some more cash, cheapskate!"
stop
dollars = 0
quarters = 0
cents = 0
while change >= 100:
dollars = dollars + 1
change = change - 100
while change >= 25:
quarters = quarters + 1
change = change - 25
while change >= 1:
cents = cents + 1
change = change - 1
print dollars " dollar(s), " quarters " quarter(s), and " cents " cent(s)."
现在,使用模和除运算符无疑可以提高效率,但我将其作为练习留给读者。
我的建议是坐下来,拿着一支铅笔和一张纸,上面写着以下列(对于购买 2 美元 93 美分的商品,需要支付 10 美元):
tendered cost change dollars quarters cents
-------- -------- -------- -------- -------- --------
1000 293
并逐行运行代码在你的脑海里,使用纸上的当前值并在发生变化的地方写下新值。
这将极大地帮助你的理解。
响应您的更新:
我有一美元,我去商店买东西。我必须要求用户输入他们花费的金额,然后计算找零并打印到屏幕上。然后我应该使用最少数量的 25 美分、10 美分、5 美分和 10 分硬币,然后将其打印到屏幕上。
这与我上面的非常相似:
tendered = 100
input cost
cost = int (cost * 100)
change = tendered - cost
if change < 0:
print "Pay up some more cash, cheapskate!"
stop
print "Change is ", (format "$9.99", change / 100)
quarters = 0, dimes = 0, nickels = 0, pennies = 0
while change >= 25:
quarters = quarters + 1
change = change - 25
while change >= 10:
dimes = dimes + 1
change = change - 10
while change >= 5:
nickels = nickels + 1
change = change - 5
while change >= 1:
pennies = pennies + 1
change = change - 1
print quarters, " quarters"
print dimes , " dimes"
print nickels , " quarters"
print pennies , " pennies"