日期是星期幾查詢程序設計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太好用啦~又學到新知識真是太開心啦!

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