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

C#循环语句,新手需要的帮助,c#,C#,我是c#的新手,需要一些循环语句的帮助 我正在设计一个程序,计算每英里的成本(50便士),每1000英里增加30英镑作为磨损费 我很难理解逻辑,如果有人能给我一些建议那就太好了 namespace ConsoleApplication10 { class Program { static void Main(string[] args) { Console.WriteLine("Input start milleage:"); decima

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

我正在设计一个程序,计算每英里的成本(50便士),每1000英里增加30英镑作为磨损费

我很难理解逻辑,如果有人能给我一些建议那就太好了

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
命名空间控制台应用程序10
{
班级计划
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“输入起始千年:”);
decimal startFile=Convert.ToDecimal(Console.ReadLine());
Console.WriteLine(“输入完成千年:”);
decimal FinishMile=Convert.ToDecimal(Console.ReadLine());
十进制总里程=完成里程-开始里程;
如果(总千年<1000)
总里程=总里程/2;
Console.WriteLine(“租用总费用:{0:C}”,TotalMilleage);
这是我到目前为止所做的代码:S

您不需要循环,只要这样表达,假设1000英里后只收取30英镑

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

计算英里数是一个
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;

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

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

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;
  }
}

我们可以看到您尝试过的代码吗?发布您到目前为止的代码,以便我们可以看到您所做的事情。作为提示,您不需要使用循环来解决这个问题-您可以使用简单的算术来解决它。@Shaddai在得到大量的-1之前,请加快速度。通常,您可以在问题正文中显示您尝试过的内容。
Convert.ToInt32
如果f分数部分是
>=0.5
你说得对@Rawling,更正假设英里数是
整数
;如果是浮动类型,你将得到部分30英镑。(你的第二个区块解决了这个问题。)是的,我想都没想就假设了。。
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));