c - 我怎样才能让我的 C 程序以美元、25 美分、10 美分、5 美分和 10 分的形式返回找零?

标签 c int calculator

代码是:

int main()
{
    displayOwe(getOwe(), customerpaid());
    displayChange(dollars, quarters, dimes, nickels, pennies);
    return 0;
}

float getOwe()
{
    float owed;
    printf("\nHow much does the customer owe? ");
    scanf("%f" ,&owed );    
    return owed;
}

float customerpaid()
{
    float paid;
    printf("\nHow much did the customer pay? ");            
    scanf("%f" ,&paid );
    return paid;
}

float calculateTotal (float paid, float owed)
{
    float answer;
    answer = paid - owed;
    return answer;
}

float displayOwe(float owed , float paid)
{   
    printf("\nCustomer owes $%0.2f and paid $%0.2f.", owed, paid);
}

int displayChange(int dollars, int quarters, int dimes, int nickels, int pennies)
{
    dollars= ;
    quarters=
    dimes=
    nickels=
    pennies=
    printf("\n\nCashier should refund %d dollars, %d quarters, %d dimes, %d nickels, and %d pennies.", dollars, quarters, dimes, nickels, pennies); 
}

我必须创建一个 C 程序来计算变化,以显示客户欠了多少以及客户支付了多少。我做了那部分,它工作得很好,但我不知道如何制作程序来显示收银员需要返回给顾客多少美元、25美分、10美分、5美分和1美分。任何帮助将不胜感激。

最佳答案

displayChange 需要两个额外的参数 - 欠 float 、支付 float 。其他参数应该是引用“&”,因为它们是输出参数。

在 displayChange 中,我会将 float 转换为整数:

int iOwed = owed * 100;  
int iPaid = paid * 100;

现在一分钱是 1,而不是 0.01,一美元是 100,而不是 1;

将它们作为整数后,首先进行更改:

int change = iPaid - iOwed;

然后通过从最大到最小的货币单位计算每种债务的金额 - 首先除以,然后得到余数。

dollars =  change / 100;

使用模运算符求余数:

remainder  = change % 100;

然后使用 25、10、5 和 1 分别表示 25 美分、10 美分、5 美分和 1 便士,继续计算剩余的值。

quarters = remainder / 25;

remainder = remainder % 25;

关于c - 我怎样才能让我的 C 程序以美元、25 美分、10 美分、5 美分和 10 分的形式返回找零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28165273/

相关文章:

c - C语言中向链表栈添加节点

java - 将 double 1.557760E12 转换为 int

ios - 乘以文本字段错误?

c - 使用 malloc 进行指针分配出错

c++ - const int *p 与 int const *p - 类型后的 const 是否可以接受?

c - 结构未按预期存储在内存中

java - 二维数组 int 的 ArrayList

Python 从 float 中获取最低有效数字(不使用字符串操作)

python - 在 eval [Python 3.4.2] 中使用用户定义的变量/函数?

flutter - 如何在flutter中实现Log base 2?