算法提高 日期计算  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
  输入只有一行
  YYYY MM DD
输出格式
  输出只有一行
  W
数据规模和约定
  1599 <= YYYY <= 2999
  1 <= MM <= 12
  1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
  1 <= W <= 7,分别代表周一到周日
样例输入
2011 11 11
样例输出
5
 #include<stdio.h>
#include<stdlib.h>
/*判断闰年函数:四年一闰,百年不闰,四百年再闰.*/
bool leap(int year){
if(year%== && year%!=)
return true;
if(year%==)
return true;
return false;
}
/*年份带来的天数差*/
getDay1(int year){
int sum=;//记录年份带来的天数差
if(year<=){
for(int i=year;i<;i++){
if(leap(i))
sum+=;
else
sum+=;
}
}
if(year>){
for(int i=;i<year;i++){
if(leap(i))
sum+=;
else
sum+=;
}
}
return sum;
}
/*月份带来的天数差*/
int getDay2(int year,int mon,int day){
int sum=;//记录月份带来的天数差
for(int i=;i<mon;i++){
if(i== || i== || i== || i== || i== || i== || i==){
sum+=;
}
if(i== || i== || i== || i==){
sum+=;
}
if(i== && leap(year)){
sum+=;
}
if(i== && !leap(year)){
sum+=;
}
}
sum = sum + day;
return sum-;//加到基准天数时其实多加了1
}
/*
在得出天数之后,还要分情况,首先将得到的天数差day%7,得到星期差; (1)如果给出的年份小于等于基础年份,那么应该从基础时间(星期六)
向负方向数day%7天,注意1之后要变成7; (2)如果给出的年份大于基础年份,那么应该从基础时间(星期六)
向正方向数day%7天,注意7之后要变成1. 注:abs():取绝对值函数。
*/
int main(){
int year,month,day;
scanf("%d%d%d",&year,&month,&day);
int sum=getDay1(year);//得到年份带来的天数差
if(year<){
sum = sum-getDay2(year,month,day);
int ans = sum%;
printf("%d",ans==?:abs(-ans));
}else{
sum = sum+getDay2(year,month,day);
int ans = sum%;
printf("%d",(+ans)> ? ((+ans)%) : (+ans));
}
return ;
}

C语言 · 日期计算的更多相关文章

  1. iOS学习笔记37-时间和日期计算

    一.时间和日期计算 我们在应用开发中,时常须要和时间打交道,比方获取当前时间,获取两个时间点相隔的时间等等,在iOS开发中与时间相关的类有例如以下几个: 1. NSDate:表示一个绝对的时间点 2. ...

  2. C语言中计算变量占用内存空间

    C语言中计算变量占用内存空间 在C语言中通常用[sizeof]运算符计算变量占内存空间,如下面的例子:

  3. java日期比较,日期计算

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 都是常用的日期之间的比较方法,供以后参考. 热身:获取当前时间 SimpleDateFormat df = new Simpl ...

  4. CCF真题之日期计算

    201509-2 日期计算 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天.满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍: 2 ...

  5. 李洪强漫谈iOS开发[C语言-041]-计算月份天数

    李洪强漫谈iOS开发[C语言-041]-计算月份天数 

  6. SQL通过日期计算年龄

    首先建立一个表如下: ======================= BirthDay datetime not null Age 通过公式计算得出 ======================= 以 ...

  7. CalendarHelper日期计算工具,各种日期的获取和计算

    今天分享一个日期获取和计算的工具类,这个最初是用在项目中获取每周每月日期用的. <Attention> 之后逛帖子的时候发现了这个专门处理日期的库,java上也有,android上还为了避 ...

  8. php 日期 - 计算2个日期的差值

    /** * 日期-计算2个日期的差值 * @return int */ public function get_difference($date, $new_date) { $date = strto ...

  9. Javascript扩展String.prototype实现格式金额、格式时间、字符串连接、计算长度、是否包含、日期计算等功能

    <script src="Js/jquery-3.1.1.min.js"></script> <script type="text/java ...

随机推荐

  1. linux卸载自带jdk

    centos 6.5系统 java -version: rpm -qa | grep jdk rpm -qa | grep gcj: 使用: yum -y remove java-1.5.0-gcj- ...

  2. [转]Redis几个认识误区

    转自timyang:http://timyang.net/data/redis-misunderstanding/ 前几天微博发生了一起大的系统故障,很多技术的朋友都比较关心,其中的原因不会超出Jam ...

  3. Java String首字母大写

    一種寫法參考 public String upperFirstChar(String input) { if (input == null || "".equals(input)) ...

  4. hibernate的hql查询语句总结

    这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Class ...

  5. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...

  6. java类中serialversionuid 作用 是什么?举个例子说明(转)

    serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...

  7. 关系型数据库性能测试参考指标----SQL Server

    注:以下指标取自SQL Server自身提供的性能计数器. [@more@] SQL Server 指标名称 指标描述 指标范围 指标单位 1.SQL Server中访问方法(Access Metho ...

  8. elk 的报错和优化

    参数调整 elasticsearch.yml配置文件里面,调整http.max_content_length: 500mb 这个默认就100m 建议调大 之前有过报错 #如果队列满了logstash就 ...

  9. Android App开发技能图谱(转载)

    操作系统 Windows/MacOSX/Linux 编程语言 Java HTML/JS (Hybrid/Web App) C/C++ (NDK) SQL (DB) Kotlin 开发工具 IDE An ...

  10. Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别

    Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别 通常来说函数调用要用到的两条基本的指令:”CALL”指令和”RET”指令.”CALL”指令将当前的指令指针(这个指 ...