程序要求输入价格,然后在其中添加gst(13%)。然后,应输出所需支付的不同硬币数量(卢尼= 1美元,四分之一= 0.25,角钱= 0.1,镍= 0.05,便士= 0.01)。
实际上,我几乎可以自己完成所有工作,但是最后应该输出几分钱的部分对我来说却无法正常工作。
例如: 当我输入8.32时,这就是我得到的
请输入付款金额:$ 8.32
GST:1.09
欠款:9.41
需要的行李箱:9,欠款$ 0.41
所需季度:1,余额$ 0.16
所需资金:1,欠款$ 0.06
所需镍:1,欠款$ 0.01
所需硬币:0,余额为$ 0.01
很显然,倒数第二行显示有0.01的未偿余额,但是程序告诉您需要0便士。
我认为问题出在类型上,但是对我来说还不是很清楚。
代码
// Presenting needed variables for this task
double amount; // We ask a customer to input the amount
int loonies, quarters, dimes, nickels, pennies; // Loonies and quarters represent single number of coins, therefore they are integer values
float owing, gst;
printf("Please enter the amount to be paid: $"); // Asking to enter the input
scanf("%lf", &amount);
gst = amount * .13 + .005;
printf("GST: %.2f\n", gst);
owing = amount + gst;
printf("Balance owing: %.2f\n", owing);
loonies = owing; // By assigning loonies to amount, we calculate the integer amount of loonies we can fit into the amount number
owing = owing - loonies; // Calculating the owing amount left to pay
printf("Loonies required: %d, balance owing $%.2f\n", loonies, owing); // Showing the amount of required loonies and the rest of owing balance
quarters = owing / 0.25; // Calculating amount of quarters to pay
owing = owing - quarters * 0.25; // Calculating the rest of the amount left to pay
printf("Quarters required: %d, balance owing $%.2f\n", quarters, owing); // Showing the amount of required quarters and the rest of owing balance
dimes = owing / 0.1;
owing = owing - dimes * 0.1;
printf("Dimes required: %d, balance owing $%.2f\n", dimes, owing);
nickels = owing / 0.05;
owing = owing - nickels * 0.05;
printf("Nickels required: %d, balance owing $%.2f\n", nickels, owing);
pennies = owing / 0.01;
owing = owing - pennies * 0.01;
printf("Pennies required: %d, balance owing $%.2f\n", pennies, owing);
return 0;
}