【发布时间】:2019-04-23 06:44:33
【问题描述】:
我有模拟非接触式结账的 C 代码。
Enter value of your bill: 50 Insert money for payment: 50 20 5 0.10 0 You have inserted: 75.1 To return: 25.1
我必须做到这一点:
Collect your payback: 20 5 0.10
我只能使用这个标称值:
float allowedMoney[13] = {100, 50, 20, 10, 5, 2, 1, 0.50, 0.20, 0.10, 0.05, 0.02 , 0.01};
知道怎么做吗? 非常感谢
main()函数
int main() {
float bill = getBill();
float payment = insertPayment();
if(!payment) return 1;
printf("You have inserted: %g\n", payment);
if(payment < bill) {
printf("Not enough money!\n");
return 1;
}
float toReturn = payment - bill;
printf("To return: %g\n", toReturn);
if(toReturn > 0) {
int payback = getPayback(toReturn);
print ... (HELP)
}
return 1;
}
编辑: 我有变量值,例如:25.1
我必须在一行中输出:20 5 0.10 那就是“20 美元 + 5 美元 + 10 美分” 我必须将数字 25.1 转换为美元和美分的格式,如下所示:20 5 0.10
20 5 0.10
20 + 5 + 0.10 但没有 +
【问题讨论】:
-
您的问题是什么?你如何打印
payback? -
使用整数而不是浮点数。如果
x是整数美分的金额,您可以使用例如打印它printf("%d.%02d\n", x / 100, x % 100);. -
是的,我觉得每个金钱问题的答案都是“不要使用浮点数”。
-
50% 的堆栈交换问题是(1)不要使用浮点数来赚钱,(2)只给 RNG 做一次种子,(3)不要使用 scanf() 做任何事情。
标签: c function integer currency