C++ 计算C+中美元-美分组合的金额+;

C++ 计算C+中美元-美分组合的金额+;,c++,C++,我正在写一个程序,要求用户以美元和剩余美分的格式输入一个金额,目的是计算和打印与给定金额相等的最小硬币数(25美分、10美分、5美分和1美分) 以下是我的代码,我已经成功地计算了四分之一,但没有计算出其余的美分面额 using namespace std; int main() { float dollars, cents; int leftover; float amount; int numberQuarters, numberDimes, numberNi

我正在写一个程序,要求用户以美元和剩余美分的格式输入一个金额,目的是计算和打印与给定金额相等的最小硬币数(25美分、10美分、5美分和1美分)

以下是我的代码,我已经成功地计算了四分之一,但没有计算出其余的美分面额

using namespace std;

int main() {
    float dollars, cents;
    int leftover;
    float amount;
    int numberQuarters, numberDimes, numberNickels, numberPennies;

    cout << "Please enter your amount in the form of dollars and cents separated by a space:" << endl;
    cin >> dollars >> cents;
    cout << dollars << " dollars and " << cents << " cents are: " << endl;

    amount = dollars + cents/100;
    leftover = amount;

    numberQuarters = (amount / 25)*100;
    leftover = leftover % 25;

    numberDimes = (leftover/10)*100;
    leftover = leftover % 10;

    numberNickels = (leftover/5)*100;
    leftover = leftover % 5;

    numberPennies = leftover;

    cout << numberQuarters << "Quarters, " << numberDimes << "Dimes " << numberNickels << "Nickels " << numberPennies << "Pennies" << endl;

    return 0;
}
使用名称空间std;
int main(){
浮动美元,美分;
int剩余物;
浮动金额;
整数四分之一、整数倍、整数倍、整数倍;
美元>>美分;

cout您可以遵循这个逻辑,将美元乘以100,而不是将美分除以100,这样您只需计算美分,计算起来容易得多,并且您将消除精度错误问题

#include <iostream>

using namespace std;

int main() {
    int dollars, cents;
    int leftover;
    int amount;
    int numberQuarters, numberDimes, numberNickels, numberPennies;

    cout << "Please enter your amount in the form of dollars and cents separated by a space:" << endl;
    cin >> dollars >> cents;
    cout << dollars << " dollars and " << cents << " cents are: " << endl;

    amount = (dollars*100) + cents;
    leftover = amount;

    numberQuarters = (amount / 25);
    leftover = leftover % 25;

    numberDimes = (leftover/10);
    leftover = leftover % 10;

    numberNickels = (leftover/5);
    leftover = leftover % 5;

    numberPennies = leftover;

    cout << numberQuarters << "Quarters, " << numberDimes << "Dimes " << numberNickels << "Nickels " << numberPennies << "PenIf your inputs are in integer then ynies" << endl;

    return 0;
}
#包括
使用名称空间std;
int main(){
整数美元,美分;
int剩余物;
整数金额;
整数四分之一、整数倍、整数倍、整数倍;
美元>>美分;

当输入明显是整数时,你为什么要使用
float
?当我使用
int
时,结果是
16个四分之一,0个一角0个五分镍币4个五分之一
,这更不正确@paulmckenzie,正如答案所示,这是因为你没有意识到你应该用美分而不是美元工作。底线是当给出一个基于整数的问题时,在这样的问题中引入浮点变量几乎总是错误的。我感谢你的建议,我试图将美元与美分匹配,我想象这会使方程变得复杂,因为我必须引入浮点。谢谢