-2

我是 c# 的新手,需要一些循环语句的帮助。

我正在通过设计一个程序来练习,该程序计算每英里的成本(即 50 便士)并每 1000 英镑增加 30.00 英镑作为磨损费用。

如果有人能给我一些很棒的提示,我很难理解逻辑。

namespace ConsoleApplication10
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Input start milleage:");
            decimal StartMile = Convert.ToDecimal(Console.ReadLine());
        Console.WriteLine("Input Finish milleage:");
            decimal FinishMile = Convert.ToDecimal(Console.ReadLine());
            decimal TotalMilleage = FinishMile - StartMile;

            if (TotalMilleage < 1000)

                TotalMilleage = TotalMilleage / 2;

                Console.WriteLine("Total charge for hire:{0:C}", TotalMilleage);


            Theres the code Ive done so far :S
4

4 回答 4

2

您不需要循环只需像这样表达,假设 30 英镑仅在 1000 英里后收费。

double price = 0.5 * DistanceInMile + ((int)(DistanceInMile /1000)) *30;
于 2012-11-22T15:03:25.443 回答
2

假设里程是int

不知道我得到了这个问题,但是:

double price = 0.5 * miles + 30 * (miles / 1000);

这样一来,1200 英里您只需添加一次 30.00 英镑。如果要添加两次:

int times = miles / 1000;
if (miles % 1000 != 0)
    times++;
double price = 0.5 * miles + 30 * times;
于 2012-11-22T15:04:11.943 回答
0
route.Cost = 0.5 * route.Length + (Math.Floor(route.Length / 1000)) * 30;
于 2012-11-22T15:14:00.213 回答
0

正如已经指出的那样,算术更好,但是由于这是一个编程练习,有很多方法可以做到这一点。

首先,假设您使用的是整数英里

int miles=4555; // example mile count;
decimal cost=0; // starting cost;
int mileCounter=0;

for (int i=1; i<=miles;i++) {
  cost += 0.5m;
  mileCounter++;
  if ( mileCounter == 1000) {
    mileCounter = 0;
    cost += 30;
  }
}

或者你不能使用里程计数器并使用数学来计算

for (int i=1; i<=miles;i++) {
  cost += 0.5m;
  if ((i % 1000) == 0) {
    cost += 30;
  }
}

你可以放弃单独的英里循环

decimal cost = 0.5m * miles;
for (int i=1000; i<= miles; i+=1000) {
  cost += 30;
}

最后是直接算术方法

decimal cost = 0.5m * miles + (30 * Math.Truncate(miles/1000m));
于 2012-11-22T15:14:48.623 回答