gpt4 book ai didi

c++ - 使用 C++ 模数运算符的票据面额

转载 作者:行者123 更新时间:2023-11-28 00:40:24 25 4
gpt4 key购买 nike

请帮帮我!我的 C++ 程序似乎有错误。代码显示关于面额的错误输出,给定一个整数比索作为输入。编写一个程序,显示 1000、500、100、50、20 和 10 比索纸币的数量。输出所有面额后的剩余金额。

这是我的程序代码。

#include <iostream>

using namespace std;

int main()
{
int a;
cout << "Enter the amount: ";
cin >> a;

cout << "No. of 1000 peso bills: " << a/1000;
cout << "\nNo. of 500 peso bills: " << a%1000/500;
cout << "\nNo. of 100 peso bills: " << a%500/100;
cout << "\nNo. of 50 peso bills: " << a%100/50;
cout << "\nNo. of 20 peso bills: " << a%50/20;
cout << "\nNo. of 10 peso bills: " << a%20/10;
cout << "\n\nThe rest of the amount: " << a%10;
}

输出显示:

Enter the amount: 34757
No. of 1000 peso bills: 34
No. of 500 peso bills: 1
No. of 100 peso bills: 2
No. of 50 peso bills: 1
No. of 20 peso bills: 0
No. of 10 peso bills: 1

The rest of the amount: 7

Process returned 0 (0x0) execution time : 2.156 s
Press any key to continue.

10 比索钞票的数量必须是 0 而不是 1,我该如何更正此问题?提前致谢。

最佳答案

问题是数学。由于 50 不是 20 的倍数,因此您需要修正 10 比索钞票的计算:

(a%50-(a%50)/20*20)/10;

这当然只是针对这种特定情况的解决方案。一般来说,如果你有其他账单,事情就更复杂了。在您的情况下,您很幸运,因为大多数钞票都是所有较小钞票的精确倍数,其中 50/20 对是唯一的异常(exception)。


一个更通用和可读的解决方案,灵感来自另一个答案:

#include <iostream>
using namespace std;

int main()
{
int a;
cout << "Enter the amount: ";
cin >> a;

cout << "No. of 1000 peso bills: " << a/1000;
cout << "\nNo. of 500 peso bills: " << (a%=1000)/500;
cout << "\nNo. of 100 peso bills: " << (a%=500)/100;
cout << "\nNo. of 50 peso bills: " << (a%=100)/50;
cout << "\nNo. of 20 peso bills: " << (a%=50)/20;
cout << "\nNo. of 10 peso bills: " << (a%=20)/10;
cout << "\n\nThe rest of the amount: " << a%10;
}

关于c++ - 使用 C++ 模数运算符的票据面额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19208849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com