用C实现简单的万年日历
来源:互联网 发布:淘宝亏本冲量 编辑:程序博客网 时间:2024/04/28 06:03
已知:
2010年1月1日是星期五,为了简便,我们假设每一年都为365天,请编程实现,任意输入某年某月,打印出该月的第三个星期五是多少号?
分析:首先,我们要编码实现,每一年的第一天是星期几;再编码实现,每一年的每一个月是星期几;最后,只需调用函数便能解决问题。
#include <stdio.h>int getEveryStartDay(int year)//获取每一年的第一天星期几{return (((year - 2010)*365 % 7 + 5) % 7);}int getEveryMonthDay(int year,int month)//获取某一年的某个月是星期几{int monthDay[] = {31,28,31,30,31,30,31,31,30,31,30,31};int sum = 0;for(int i = 0;i < month - 1;i ++){sum += monthDay[i];}return ((sum % 7 + getEveryStartDay(year)) % 7);}int main(){int y,m;printf("please input Year and Month:");scanf("%d%d",&y,&m);if(y < 2010 || m <= 0 || m > 12){printf("the data you input is error.\n");}int startDay = getEveryMonthDay(y,m);if(startDay <= 5){printf("%2d\n",14 + 5 - startDay);}else{printf("%2d\n",14 + 13 - startDay);}}
深入探讨:假如要分平年和闰年,那又如何解决问题呢?
判断是否为润年:
/* * input: year * * if year is a leap year,return ture * * else return false */bool IsOrNotLeapYear(int year){if(year <= 0)return ;bool tag;if(year % 4 == 0){if(year % 100 == 0){if(year % 400 == 0){tag = true;}else{tag = false;}}else{tag = true;}}else{tag = false;}return tag;}
判断是否为素数
void IsOrNotPrimeNum(int nNum,int *dest,int *len)//int dest[100],len;IsOrNotPrimeNum(100,dest,&len);{if( (nNum < 2) || (dest == NULL) || (len == NULL) )return ;bool tag;int nCount = 0;for(int i = 2;i < nNum;i ++){tag = false ;for(int j = 2;j <= sqrt(i);j ++){if(i % j == 0){tag = true;break;}}if(tag == false){dest[nCount ++] = i;}}*len = nCount;}
- 用C实现简单的万年日历
- c++:日历的实现
- 用Calendar实现简单的小日历
- 用C实现任意一年的日历
- 万年日历(转)
- php 万年日历
- iSO简单的日历实现
- js实现简单的日历
- 实现一个简单的日历
- 50行C代码实现简单日历
- ios用collectionView实现无限滚动的简单日历
- 一个简单的日历的实现
- PHP实现的简单日历代码
- js实现简单漂亮的日历
- java实现的一个简单日历
- PHP实现的简单日历类
- java 实现简单的日历查询
- Android使用GridView实现简单的日历
- TCP 三次握手
- HDOJ 1024 M子段最大和问题
- JavaSE学习笔记--网络编程之UDP
- 23中设计模式——Command模式
- (转)c++对象内存分析4
- 用C实现简单的万年日历
- (转)c++对象内存分析3
- TC35学习5------基于STM32f103下的GSM数据采集
- HDU 1406 完数
- phpMyAdmin配置
- (转)c++对象内存分析2
- (转)c++对象内存分析5
- SoLoMo:移动互联网创新的“三维模式”分析
- .h和.cpp文件的区别