关于日期的计算问题。。。。。

昨天晚上加今天半早上。。。 终于ac了
两个注意点 一个是关于某年某月某日换算为这年的N天的问题 定义两个数组 一个用来存放闰年的 一个用来存放平年的。。。。。 这样处理起来就不用怕出差错了。。
用二维字符数组来代替switch 每一个“,,,”表示每行中的字符串 这样方便一点
最后贴上代码 纪念我的逝去的时间。。。。。。

#include<stdio.h>
#include<stdlib.h>
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
char s[8][10] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
int run(int x)
{
 if((x%100!=0&&x%4==0)||(x%400==0))
 return 1;
 else
 return 0;
}
int days(int year,int mouth,int day)
{
 int sum=0,i,z;
 for(i=0;i<=mouth-1;i++)
 {
  if(run(year))
  sum+=b[i];
  else
  sum+=a[i];
 }
    sum+=day;
 return sum;
}

int get(int year,int mouth,int day)
{
 if(run(year)==1)
    {
     if((day>b[mouth])||(mouth>12&&mouth<=0)||(year<0&&year>1000)||day==0)
     return 0;
     else
     return 1;
    }
 else
 {
  if((day>a[mouth])||(mouth>12&&mouth<=0)||(year<0&&year>1000)||day==0)
        return 0;
  else
  return 1;
 }
}
int main()
{
 int year,mouth,day,sum,i;
 while(scanf("%d %d %d",&year,&mouth,&day)!=EOF)
 {
  sum=0;
  if(get(year,mouth,day)==0)
  printf("illegal\n");
  else
  {
   for(i=1;i<year;i++)
   {
    if(run(i)==1)
    sum+=2;
    else
    sum+=1;
    
   }
   sum=sum+days(year,mouth,day)-1;
   sum=sum%7;
   printf("%s\n",s[sum]);
  }
 
 }
 return 0;
}

时间: 2024-11-05 11:07:18

关于日期的计算问题。。。。。的相关文章

Java 根据给定的日期,计算两个日期之间的时间差

计算两个Date之间的时间差,基本思路为把Date转换为ms(微秒),然后计算两个微秒时间差. 时间的兑换规则如下: 1s秒 = 1000ms毫秒 1min分种 = 60s秒 1hours小时 = 60min分钟 1day天 = 24hours小时 package com.qiyadeng.date; import java.text.SimpleDateFormat; import java.util.Date; public class DateDifferentExample { publ

Date()日期简单计算

/** * 判断是否为闰年 * @param year * @return */ public boolean isLeap ( int year ) { if ( (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ) return true; else return false; } /** * 判断某年某月总天数 * @param year * @param month * @return */ public int get

Calendar日期的计算

一,得到三月内的周六,周日 Calendar calendar=Calendar.getInstance();//当前日期 Calendar calendar2=Calendar.getInstance(); int curYear = calendar2.get(Calendar.YEAR); // 得到系统年份 int curMonth = calendar2.get(Calendar.MONTH); // 得到系统月份 int curDay=calendar2.get(Calendar.D

mysql中的日期处理 计算 字符串截取

一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_

PostgreSQL的日期运算计算函数使用

一:各个数据中的连接符 SqlServer的连接符:+(加号) Sqlite的连接符:.(点) PostgreSQL的连接符:||(或) 二: 今天在PostgreSQL计算日期的时候,翻了一些资料,很少,就记录下来吧~! 其中使用到的函数及变量 to_char().Date().now().current_date 计算两个日期的差 current_date为今天的日期,为:2015-06-03 Date('2015-06-05')-current_date=2 select   to_cha

MFC 时钟 计算器 日期天数计算

Windows大作业报告 课程名称:windows程序设计 所属学院:计算机学院 所属班级:软件113班 原 创   :刘东彦 指导老师:陆筱霞 完成日期:2012年12月3日 Windows大作业报告 目录 目录?1 一.作者信息?5 二.准备工作?5 1.建立工程?5 2.准备图片?6 3. 添加位图?7 三.设计钟表和电子钟?9 1.创建对话框CMyDialog1?9 2. 设计CMyDialog1?9 3. 关联变量?12 4.添加成员变量?14 4. 添加静态成员变量?15 5. 初始

python脚本获取文件的创建于修改日期并计算时间差

由于在计算一个算法的运行时间的时候,需要将文件的创建日期与修改日期读取到,然后计算两者之差,在网上搜索了相关的程序之后,自己又修改了一下,把代码贴在这里,供以后查阅使用,也希望可以帮到其他人. 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Mon Dec 12 14:59:46 2016 4 5 @author: shenruixue 6 7 to calculate size after filter in conv and po

Java中时间日期的计算及相互转换

Java中表示时间日期的主要是Date和Calendar两个类,以及Date与String转换用到的SimpleDateFormat类. 0x00:Date与long类型之间的转换 Java内部使用UTC时间,保存距1970年01月01日00时00分00秒以来所经历的毫秒值,使用的是long类型. //需要导入java.util包里的Date类 import java.util.Date; long millis = 0; Date date = new Date(); //将date转为mil

boost 日期时间计算

示例代码如下: 1 #include <boost/date_time/gregorian/gregorian.hpp> 2 #include <boost/date_time/posix_time/posix_time.hpp> 3 using namespace boost::gregorian; 4 using namespace boost::posix_time; 5 #include <iostream> 6 using namespace std; 7 #

【c++程序】任意给两个日期,计算相差多少天和各自星期几

#include<iostream> using namespace std; struct Date { int y;//year int m;//month int d;//day in month }; bool isLeap(int y)//判断是否是闰年 { return y%4==0&&y%100!=0||y%400==0;//真返回为1,假为0 } int daysOfMonth(int y,int m) { int day[12]={31,28,31,30,31