打印副本的C#程序
我的程序是在第一次复印100份文件时,每打印一份就收取2美元。如果用户打印出的副本超过1份,则对于超过1份的副本,每一份需要1美元(因此,如果我想打印出101份,价格应为200+1,第101份1美元,前100份各2美元)。这是我的密码:打印副本的C#程序,c#,C#,我的程序是在第一次复印100份文件时,每打印一份就收取2美元。如果用户打印出的副本超过1份,则对于超过1份的副本,每一份需要1美元(因此,如果我想打印出101份,价格应为200+1,第101份1美元,前100份各2美元)。这是我的密码: int CopyCost = 2; int ammountOfCopies; int discount = 1; Console.WriteLine("How many copies would you like?
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();
int CopyCost=2;
国际货币基金组织;
整数折扣=1;
Console.WriteLine(“您想要多少份?:”;
ammontofcopies=int.Parse(Console.ReadLine());
for(int i=0;i100)
复制成本=2-折扣;
其他的
复制成本=2;
CopyCost*=版权费;
}
WriteLine(“副本的总成本为:{0}”,CopyCost);
Console.ReadLine();
但我的问题是,如果我选择写101份,它会将每份折价为1美元,而不仅仅是100份以上的。这与其说是编码问题,不如说是一个数学问题。你需要取100份或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,顺便说一句,不是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);
对于此问题,您不需要使用
for
循环。。。