用于打印副本的C#程序

本文关键字:程序 副本 打印 用于 | 更新日期: 2023-09-27 18:27:58

我的程序在复印的前100篇论文中,每打印一份需要2美元。如果用户打印出超过一百份,那么每一份超过一百份需要1美元(因此,如果我想打印101份,价格应该是200+1,第101份1美元,前100份每份2美元)。这是我的代码:

int CopyCost = 2;
        int ammountOfCopies;
        int discount = 1;
        Console.WriteLine("How many copies would you like?: ");
        ammountOfCopies = int.Parse(Console.ReadLine());

        for (int i = 0; i < ammountOfCopies; i++)
        {
        if (ammountOfCopies > 100)
            CopyCost = 2 - discount;
        else
            CopyCost =  2;
        CopyCost *= ammountOfCopies;
        }
        Console.WriteLine("The total cost for your copies is: {0} ", CopyCost);
        Console.ReadLine();

但我的问题是,如果我选择写101本,它会将每本折扣到1美元,而不仅仅是100本以上的那本。

用于打印副本的C#程序

这更多的是一个数学问题,而不是一个编码问题。你需要取100或以下的副本数量,并将其与正常价格相乘。然后取超过100份的数量乘以折扣价。不需要for循环。

将问题分解为代码中的小块,例如:

int price = 2;
int discountedPrice = price - 1;
int amountAtNormalPrice = Math.Min(amountOfCopies, 100);
int amountAtDiscountPrice = Math.Max(amountOfCopies - 100, 0);
int amountTotal = (amountAtNormalPrice * price) + (amountAtDiscountedPrice * discountedPrice);

您在每个副本(numberOfCopies,btw,而不是amountOfCopies)上循环,并每次应用计算。你应该直接计算;在这种情况下不需要循环:

if (numberOfCopies > 100)
{
    CopyCost = 200 + (numberOfCopies - 100);
}
else
{
    CopyCost = 2 * numberOfCopies;
}

更好,使用以下代码:

int TotalCost;
if (amountOfCopies > 100)
{
    TotalCost = (amountOfCopies - 100) * (CopyCost - discount) + 100 * CopyCost;
}
else
{
    TotalCost = amountOfCopies * CopyCost;
}
Console.WriteLine("The total cost for your copies is: {0} ", TotalCost);

或者,如果您喜欢单行:

price = (copies * 2) - Math.Max(copies - 100, 0);