根据年月日,判断20XX年XX月XX日是 星期几

//  已知1999.12.31是周五
//  根据年月日,判断20XX年XX月XX日是 星期几

#include "stdio.h"

unsigned int Year;
unsigned int Month;
unsigned int Day;

//===============================================================================
//判断是否为闰年
//===============================================================================
// 公元纪年的年数可以被四整除且不能被100整除,即为闰年;
// 被100整除也可被400整除的为闰年;
// 被100整除而不能被400整除为平年;
char Whether_LeapYear(unsigned int y)
{
    return ( y%4==0 && y%100!=0 ) || (y%400==0);
}

//----------------------------------
//          验证每月最大天数
//----------------------------------
unsigned int Max_Valid_Day(unsigned int MonthTemp)
{
    unsigned int MaxDay;

    switch(MonthTemp)
    {
        // 1.3.5.7.8.10.12月31天
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            MaxDay = 31;
            break;

        // 4.6.9.11月30天
        case 4:
        case 6:
        case 9:
        case 11:
            MaxDay = 30;
            break;

        case 2:
            if(Whether_LeapYear(Year))
                MaxDay = 29;        // 闰年2月29天
            else
                MaxDay = 28;        // 平年2月28天
            break;
    }

    return MaxDay;
}
//----------------------------------------
//求自2000.1.1开始的任何一天是星期几
//函数没有通过求出总天数,再求星期几
//因为求总天数可能会超过uint的范围
//----------------------------------------
unsigned int Get_WeekDay(unsigned int rYear,unsigned int rMonth,unsigned int rDay)
{
    unsigned int i;
    unsigned int d;
    unsigned int w=5;    //已知1999.12.31是周五

    //从2000.1.1开始推算出(当前年i-1)年12.31是星期几(w)
    for(i=2000; i<rYear; i++)
    {
        d = Whether_LeapYear(i)? 366:365;
        w = (w + d) % 7;
    }

    //计算出当前所设置的年月日时该年的第几天
    for(d=0,i=1; i<rMonth;    i++)
        d += Max_Valid_Day(i);
    d += rDay;

    //根据w与d计算出当前【年/月/日】是星期几
    //返回值是: 0    -    1    -   2    -    3    -    4    -    5    -    6
    //对应星期: 日        一       二        三         四        五        六

    return ((w + d) % 7);
}

void main(void)
{
    while(1)
    {
        printf("请输入年月日\n");
        scanf("%d%d%d",&Year,&Month,&Day);
        printf("%d年%d月%d日是周",Year,Month,Day);
        printf("%d \n",Get_WeekDay(Year,Month,Day));
        printf("---------------------------------------\n\n");
    }
}

时间: 2024-10-12 02:26:37

根据年月日,判断20XX年XX月XX日是 星期几的相关文章

编程练习效果图:XXXX年XX月X日 星期X--班级总分为:81

编程练习 某班的成绩出来了,现在老师要把班级的成绩打印出来. 效果图: XXXX年XX月X日 星期X--班级总分为:81 格式要求: 1.显示打印的日期. 格式为类似"XXXX年XX月XX日 星期X" 的当前的时间. 2.计算出该班级的平均分(保留整数). 同学成绩数据如下: "小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76" 任务 第一步:可通过javascript的日期对象来得到当前的

【BIRT】在页面上展示xxxx年xx月xx日

我们在做报表开发的时候经常会杜鳌一个问题,就是需要在报表上展示"xxxx年xx月xx日"这种日期,例如:需要在报表展示日期如下图: 我们现在数据库存储的日期是:20171231 那么我们如何转化为 这种日期类型呢? 我们可以使用BIRT的函数BIRTStr 假定:字段名为dtDate 那么我们的表达式为: BirtStr.left(dtDate,4)+'年'+BirtStr.right(BirtStr.left(dtDate,6),2)+'月'+BirtStr.right(dtDate

求当前时间100天后的时间日期,格式化为xxxx年xx月xx日

package com.demo1; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Demo9 { public static void main(String[] args) { Date date=new Date(); System.out.println(getDate(date,100)); } public static String

微信小程序时钟(xx年xx月xx日xx:xx格式)

wxml: <view>时间:{{newTime}}</view> js: page({ data:{ newTime:'' }, onLoad: function (options) { var that = this; //获取实时时间 setInterval(function () { var nowTime = new Date(); var hour = nowTime.getHours(); var minutes = nowTime.getMinutes(); if

南家三姐妹 某年5月星期二和星期五各出现了4次,这个月5日是星期几 程序解法 多元组使用

using Microsoft.CSharp; using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { class Program { static

随机输入日期计算星期几(1900年1月1日为基础)

已知,1900年1月1日是星期1,用户随机输入年月日,计算星期几 代码如下(未改进),欢迎批评指正 year=int(input('year')) month=int(input('month')) day=int(input('day')) if year >=1900:#大于等于1900 ryear =1900 sum =0 while ryear < year:#1901 if ((ryear % 4 == 0) and (ryear %100 !=0))or(ryear % 400 =

C# 根据年、月、周、星期获得日期等

原文:C# 根据年.月.周.星期获得日期等 [参考] http://blog.csdn.net/livening/article/details/6049341 http://zhidao.baidu.com/question/378600365.html http://www.cnblogs.com/roy117/archive/2008/03/25/1121584.html 楼上几层的代码都太多了,不用那么复杂. 先跟你说一下原理: 1.国际上的WeekDay是从周日到周六的顺序 2.再说C

3月11日 判断输入的年月日是否正确

//判断年月日是否正确: for (; ; ) { Console.Write("请输入年份:"); int a = int.Parse(Console.ReadLine()); if (a >= 0 && a <= 9999) { Console.Write("请输入月份:"); for (; ; ) { int b = int.Parse(Console.ReadLine()); if (b <= 12 && b

年月日判断并输出第多少天

方法一: while (true) { Console.Write("输入年:"); int year = int.Parse(Console.ReadLine()); Console.Write("输入月:"); int month = int.Parse(Console.ReadLine()); Console.Write("输入日:"); int day = int.Parse(Console.ReadLine()); bool isok