我是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
答案 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));