C++ 使用c+的票据面额+;模算子

C++ 使用c+的票据面额+;模算子,c++,modulus,operation,C++,Modulus,Operation,请帮帮我!我的C++程序好像有一个错误。代码显示了有关面额的错误输出,输入的是以比索为单位的整数金额。编写一个程序,显示1000、500、100、50、20和10比索钞票的数量。输出所有面额被移除后的剩余金额 这是我的程序代码 #include <iostream> using namespace std; int main() { int a; cout << "Enter the amount: "; cin >> a;

请帮帮我!我的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;
}

10比索钞票的数目必须是0而不是1,我怎么能纠正这个问题呢?提前谢谢。

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

(a%50-(a%50)/20*20)/10;
当然,这只是针对这一特定情况的解决方案。一般来说,如果你有其他账单,事情就更复杂了。在你的情况下,你很幸运,因为大多数钞票是所有小钞票的精确倍数,而50/20对是唯一的例外


受另一个答案启发,提供了一个更通用、更具可读性的解决方案:

#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;
}
#包括
使用名称空间std;
int main()
{
INTA;
cout>a;

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

(a%50-(a%50)/20*20)/10;
当然,这只是针对这种特殊情况的一种解决方案。一般来说,如果你有其他账单,事情就更复杂了。在你的情况下,你只是幸运了,因为大多数账单是所有较小账单的精确倍数,其中50/20对是唯一的例外


受另一个答案启发,提供了一个更通用、更具可读性的解决方案:

#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;
}
#包括
使用名称空间std;
int main()
{
INTA;
cout>a;

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

(a%50-(a%50)/20*20)/10;
当然,这只是针对这种特殊情况的一种解决方案。一般来说,如果你有其他账单,事情就更复杂了。在你的情况下,你只是幸运了,因为大多数账单是所有较小账单的精确倍数,其中50/20对是唯一的例外


受另一个答案启发,提供了一个更通用、更具可读性的解决方案:

#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;
}
#包括
使用名称空间std;
int main()
{
INTA;
cout>a;

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

(a%50-(a%50)/20*20)/10;
当然,这只是针对这种特殊情况的一种解决方案。一般来说,如果你有其他账单,事情就更复杂了。在你的情况下,你只是幸运了,因为大多数账单是所有较小账单的精确倍数,其中50/20对是唯一的例外


受另一个答案启发,提供了一个更通用、更具可读性的解决方案:

#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;
}
#包括
使用名称空间std;
int main()
{
INTA;
cout>a;

cout解决此问题的一种方法是从总额中减去您已经用较大的账单表示的金额,如下所示:

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

cout解决此问题的一种方法是从总额中减去您已经用较大账单表示的金额,如下所示:

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

cout解决此问题的一种方法是从总额中减去您已经用较大账单表示的金额,如下所示:

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

cout解决此问题的一种方法是从总额中减去您已经用较大账单表示的金额,如下所示:

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

a==50
是一个比较简单的例子,我想不出怎么解决这个例子。想不出怎么解决一个比较简单的例子,比如
a==50
。想不出怎么解决一个比较简单的例子,比如
a==50
。想知道怎么解决一个比较简单的例子,比如
a==50
+1为了更一般的解决方案,我添加了一个简化的版本对于更一般的解决方案,我在我的答案中添加了简化版本。+1对于更一般的解决方案,我在我的答案中添加了简化版本。+1对于更一般的解决方案,我在我的答案中添加了简化版本。