我正在尝试编写一个程序,该程序将获取用户在工作日、晚上和周末分钟的输入,并将列出每分钟的平均成本、税前账单、税金和总账单(根据问题中给出的统一税率/税率/额外的工作日分钟费率值

#include <stdio.h>
#include <math.h>

#define CENTS_PER_DOLLAR 100
#define FLAT_RATE_IN_CENTS 3999
#define TAX_RATE 0.05
#define ADDITIONAL_WEEKDAY_MIN_IN_CENTS 40

int main()
{
    int  weekdayMin, nightMin, weekendMin;
    float pretaxBill, taxes, totalBill, averageCost;

    printf("Please enter the number of weekday minutes, night minutes: ");
    scanf("%d %d", &weekdayMin, &nightMin);
    printf("Please enter the number of weekend minutes: ");
    scanf("%d", &weekendMin);
    printf("\n");
    printf("Weekday minutes: %d, night minutes: %d, weekend minutes: %d \n", weekdayMin, nightMin, weekendMin);
    averageCost = (weekdayMin + weekendMin + nightMin)/(FLAT_RATE_IN_CENTS);
    printf("Average minute cost: $%.2f ", averageCost);
    if (weekdayMin <= 600)
    {
            pretaxBill = FLAT_RATE_IN_CENTS;
            taxes = FLAT_RATE_IN_CENTS*TAX_RATE;
            totalBill = pretaxBill + taxes;
            printf("Pretax bill: $%d \nTaxes: $%d \nTotal bill: $%d", pretaxBill, taxes, totalBill);
    }
    else
    {
            pretaxBill = (weekendMin - 600)*ADDITIONAL_WEEKDAY_MIN_IN_CENTS;
            taxes = pretaxBill*TAX_RATE;
            totalBill = pretaxBill + taxes;
            printf("Pretax bill: $", pretaxBill, "\nTaxes: $", taxes, "\nTotal bill: $\n", totalBill);
    }
    return(0);
}

每当我运行这个程序时,它返回的平均成本值为0。我知道代码的其余部分格式不正确,当您运行它时,会有许多错误。我只是想知道如何从每分钟的平均成本中得到说明书中指定的值。然而,任何其他的建议或关于该计划的其他部分的投入是赞赏的。我对C还是很陌生,所以请容忍我
这是预期的输出
请输入工作日分钟数,夜间分钟数:600 50
请输入周末分钟数:150
工作日分钟:600,夜间分钟:50,周末分钟:150
平均分钟成本:0.05美元
税前账单:39.99美元
税金:2.10美元
账单总额:42.09美元

最佳答案

你用的是整数变量,它不能代表分数。进行计算时需要转换为浮点:

averageCost = ((float)(weekdayMin + weekendMin + nightMin))/(FLAT_RATE_IN_CENTS);

将结果赋给float不会导致它以float的形式进行计算;它以int的形式进行计算,然后将结果(0)转换为float。

关于c - C中的手机账单计算器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19553030/

10-10 07:04