美好的一天!在我为学校编写的程序中,我们必须制作一个收银机类型的程序,这看起来很简单,但是对我而言,我无法使其正常工作。计入购买的产品数量后,再计算所有价格,程序必须要求现金支付,然后退还找零。但是找零时必须先返还一定数量的卢尼(或1美元的钞票),然后再返还剩余的美分。救命?我已经得到了一些工作,但是我不知道该如何做。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int itemNum, justChange;
    double prodPrice, tax, cashGiven, change, purchasePrice, changeGiven, changeBack, cashBack;
    float totalPrice;

    //Num of items
    printf ("Number of items: ");
    scanf("%d", &itemNum);

    //Price of items
    printf("Please enter price of items: ");
    scanf("%lf", &prodPrice);

    //Math Stuff
    purchasePrice = itemNum*prodPrice;
    tax = purchasePrice * 0.13;
    totalPrice = purchasePrice*1.13;

    //find change alone
    //justChange = totalPrice


    //Price Output
    printf("Purchase price is: %.2lf \n",purchasePrice );
    printf("TAX (HST 13%):     %.2lf\n",tax );
    printf("Total price is:    %.2lf \n",totalPrice );



    printf("Please Enter Cash: ");
    scanf("%lf", &cashGiven);

    printf("Please Enter Change: ");
    scanf("%lf", &changeGiven);

    //MAth stuuff again

    double endCash;
    double loony;
    int yoloswag;
    endCash = cashGiven - totalPrice;
    loony = endCash/1;
    loony = loony--;

    if (loony<0)
        printf ("Loonies: 0");
    else
    printf("Loonies: %.0lf \n",loony );

    printf("change: %d ", totalPrice-floor(totalPrice) );

    return 0;
}

最佳答案

创建具有可能更改值的数组;

double cashValues[6] = {1, 0.5, 0.2, 0.1, 0.05, 0.01};


然后创建一个for循环,在其中尝试从差中减去可能的更改值,直到差为零。

double difference;
difference = cashGiven - totalPrice;
while (difference != 0) {
    for(int i=0; i<6; i++) {
         if(cashValues[i] <= difference) {
              difference -= cashValues[i];
              printf("%f \n", cashValues[i]);
              i=0;
         }
    }
}

07-26 03:15