用C#编程
Lee 的老家住在工业区,日耗电量非常大。今年 7 月,传来了不幸的消息,政府要在 7、8 月对该区进行拉闸限电。政府决定从 7月 1 日起停电,然后隔一天到 7 月 3 日再停电,再隔两天到 7 月 6 日停电,依次下去,每次都比上一次长一天。Lee 想知道自己到家后到底要经历多少天倒霉的停电。请编写程序帮他算一算。
任务:实现停电停多久问题关键算法。
注意:从键盘输入放假日期、开学日期,日期限定在 7、8 月份,且开学日期大于放假日期,然后在屏幕上输出停电天数。
提示:可以用数组标记停电的日期。
//直接上代码了:
static void Main(string[] args)
{
DateTime now = new DateTime(2021, 7, 1);
DateTime to = new DateTime(2021, 8, 30, 23, 59, 59);
List<DateTime> result = new List<DateTime>();
int incDays = 2;
while (now <= to)
{
result.Add(now);
now = now.AddDays(incDays++);
}
foreach (var time in result)
{
Console.WriteLine(time.ToString("yyyy:MM:dd"));
}
return;
}
这不会是考试题吧?
/*
Lee 的老家住在工业区,日耗电量非常大。今年 7 月,传来了不幸的消息,政府要在 7、8 月对该区进行拉闸限电。政府决定从 7月 1 日起停电,然后隔一天到 7 月 3 日再停电,再隔两天到 7 月 6 日停电,依次下去,每次都比上一次长一天。Lee 想知道自己到家后到底要经历多少天倒霉的停电。请编写程序帮他算一算。
任务:实现停电停多久问题关键算法。
注意:从键盘输入放假日期、开学日期,日期限定在 7、8 月份,且开学日期大于放假日期,然后在屏幕上输出停电天数。
提示:可以用数组标记停电的日期。
1,3,6,10,15,
*/
var d1 = new DateTime(2021, 07, 01);
var d2 = new DateTime(2021, 09, 01);
var allDays = new List<DateTime>();
var x = 2;
while (d1 < d2)
{
allDays.Add(d1);
d1 = d1.AddDays(x++);
}
Console.WriteLine($"{d1.ToShortDateString()}到{d2.ToShortDateString()},共停电{allDays.Count}天,[{string.Join(',', allDays.ConvertAll(x => x.ToShortDateString()))}]");
//计算
while (true)
{
try
{
Console.WriteLine($"输入放假日期(格式:xxxx-mm-dd):");
var t1 = DateTime.Parse(Console.ReadLine());
Console.WriteLine($"输入开学日期(格式:xxxx-mm-dd):");
var t2 = DateTime.Parse(Console.ReadLine());
var result = allDays.Where(x => x >= t1 && x <= t2).ToList();
Console.WriteLine($"{t1}到{t2},停电{result.Count}天,[{string.Join(',', result.ConvertAll(x => x.ToShortDateString()))}]");
}
catch (Exception ex)
{
Console.WriteLine($"格式错误:{ex.Message}");
}
}