日期是星期几查询程序设计C#

实验2. 日期是星期几查询程序设计

呜~~鸽作业太多了,以至于这两天要连着敲代码辽555,可惜了我的王者农药晋级赛还没打qwqqq,害快点敲完快点晋级赛去辽嘻嘻~

要求回顾

【实验要求】

对于用户从键盘输入的一个日期,编程输出这一天是星期几。

【实验目的】

1.练习用基本的程序结构解决实际问题。

2.学习处理较复杂问题的方法。

3.提高计算思维能力。

【实验类型】

设计性。

【实验内容】

需要将用文字描述的预备知识内容转化成程序中用到的代码。

预备知识:

公元元年的元旦是星期一,另知1900年1月1日是星期一。

需判断日期当年及前面的年是否是闰年IsLeapYear,闰年2月29天,全年366天,平年2月28天,全年365天。

公历闰年的精确计算方法:四年一闰;百年不闰;四百年再闰。

① 普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)

② 世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)

③ 对于数值很大的年份,这年如果能整除3200,并且能整除172800则是闰年。

如172800年是闰年,86400年不是闰年。 86400=216*400

从实际应用出发,可只考虑1900-9999之间的年份。

知识面宽的同学可能会用到基姆拉尔森星期计算公式

Kim larsson calculation formula

W= (d+2m+3(m+1)/5+y+y/4-y/100+y/400+1) mod 7

在公式中d表示日期中的日数,m表示月份数,y表示年数。

算法思路步骤

算法思路:总天数对7取余数的算法
Step1. 从键盘输入的一个日期date
Step2. 计算公元元年元旦到日期date的
总天数daysCount。
所需代码块:

int daysCount = 0;
for (int i = 1; i < yearValue; i++)
{
if (IsLeapYear(i))
daysCount += 366;
else
daysCount += 365;
}
daysCount += GetDayOfYear(date);

Step3. daysCount除以7取余数(daysCount % 7)

代码实现CSharp

代码1

利用最简单也是最容易想到的方法进行代码的编写:使用总天数对7取余数的算法

略。

代码2

利用Date Time结构对代码1进行改进

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1日期是星期几查询程序设计
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("欢迎使用星期几查询系统!by SDNU咸鱼小十七酱ovo");
            int year, month, day;
            Console.WriteLine("请依次输入年、月、日:");
            Console.WriteLine("请输入年:");
            year = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入月:");
            month = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入日:");
            day = Convert.ToInt32(Console.ReadLine());
            DateTime dt = new DateTime(year, month, day);
            Console.WriteLine("您输入的日期时间是:" + dt);
            Console.WriteLine("您输入的日期时间是:" + dt.ToShortDateString());
            Console.WriteLine("您输入的日期时间是:" + dt.ToLongDateString());
            Console.WriteLine(year + "-" + month + "-" + day + "是" + dt.DayOfWeek);
            Console.WriteLine("感谢使用,再见!by SDNU咸鱼小十七酱ovo");
            Console.ReadLine();
        }
    }
}

运行结果

CSharp程序调试运行界面截屏//调试平台:Visual Studio 2019

收获与体会

学到了学到了,不讲课直接上实验太爽了,原来近百行的代码只需要十几行就搞定了呢!Date Time太好用啦~又学到新知识真是太开心啦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章