C#循环语句,新手需要帮助

时间:2012-11-22 15:01:07

标签: c#

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

我正在练习设计一个计算每英里成本(50便士)的程序,每增加1000英镑作为磨损$撕裂费用。

如果有人能给我一些很棒的提示,我在解决问题时遇到了问题。

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 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

假设里程为int

不确定我是否得到了问题,但是:

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

这样,在1200英里的情况下,您只需加入30英镑。如果要添加两次:

int times = miles / 1000;
if (miles % 1000 != 0)
    times++;
double price = 0.5 * miles + 30 * times;

答案 2 :(得分:0)

route.Cost = 0.5 * route.Length + (Math.Floor(route.Length / 1000)) * 30;

答案 3 :(得分: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));