c语言编写的日历
输入年份如2013,显示2013年的日历。
思路:
1.查找每个月1号是星期几(这里利用了1990年1月1号是星期一)
计算年份如2013年1月1号到1990年1月1号有Days天,Day%7得到星期索引WeekDay
2.每个月日历打印六行内容,每行七个日期,不是日历内容打印空格
#include <stdio.h> #define BOOL int
#define TRUE 1
#define FALSE 0 int GetWeekDay(int year, int month, int day); /* 获取某一年,某一月,某一天是星期几 */
void PrintCalendar(int year); /* 打印第year年的日历 */
BOOL IsLeap(int year); /* 判断是否为闰年 */ int main()
{
int year;
// char* week[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; /* 字符指针数组 */ // int WeekDay = GetWeekDay(2000, 1, 1); // printf("今天是星期:%s\n", week[WeekDay]); printf("请输入要查询的年份:\n"); scanf("%d", &year); PrintCalendar(year); return ;
}
/*-------------------------------------------------------------------------
功能:获取year年,month月,day天是星期几 这里利用了1900年1月1号是星期一
输入:年份year,月份month日期day
输出:星期索引
---------------------------------------------------------------------------*/
int GetWeekDay(int year, int month, int day)
{
int count, Week_Index,i;
int Day[] = {, , , , , , , , , , , , }; /* 每月的天数 */
int MonthAdd[] = {, , , , , , , , , , , }; /* 每月前所有月份的天数之和 */ count = MonthAdd[month - ]; /* 月份month前面所有月份的天数 */
count = count + (year - ) * ;
count = count + day; /* 与1900年1月1号相差多少天 */
if(month > && IsLeap(year)) /* 月份month超过2月份 且是闰年 */
count ++;
for(i = ; i < year; i ++)
{
if(IsLeap(i)) /* 如果是闰年 */
{
count ++;
}
} Week_Index = count % ; return Week_Index;
}
/*------------------------
功能:打印year年的日历
输入:year年份
输出:year年的日历
--------------------------*/
void PrintCalendar(int year)
{
int i, j, k;
int WeekDay;
int Day[] = {, , , , , , , , , , , , };
int MonthDays; for(i = ; i < ; i ++) /* 依次打印每个月份的日历 */
{
int temp = ;
MonthDays = Day[i];
if(IsLeap(year) && i == ) /* 闰年第二个月为29天 */
MonthDays = ;
WeekDay = GetWeekDay(year, i, ); /* 获取每个月1号 星期索引 */
printf("%d月\n", i);
printf("日\t一\t二\t三\t四\t五\t六\n");
for(j = ; j <= ; j ++) /* 每个月日历打印六行 */
{
if(WeekDay != )
{
printf("\t");
WeekDay --;
if(j % == )
printf("\n");
continue;
}
if(MonthDays > ) /* 每个月的日历 */
{
printf("%d\t", temp);
temp ++;
if(j % == )
printf("\n");
MonthDays --;
}
else
printf("\t");
}
printf("\n");
}
}
/*--------------------------
功能:判断year是否为闰年
输入:年份year
输出:闰年TRUE平年FALSE
---------------------------*/
BOOL IsLeap(int year)
{
BOOL result;
if(((year % == ) && (year % == )) || ((year % != ) && (year % == ))) /* 闰年 */
{
result = TRUE;
}
else
result = FALSE; return result;
}

c语言编写的日历的更多相关文章
- c语言的简易日历
用c语言编写的简易日历,代码如下: #include <stdio.h> int main(int argc, const char * argv[]) { // insert code ...
- 基于php基础语言编写的小程序之计算器
基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...
- 如何用C语言编写病毒‘
怎样用C语言编写病毒在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.[Abstract] This paper introduce the charateristic ...
- 选择使用c语言编写的phalcon框架
使用这个框架,我总结了如下几点考虑 1.这个框架速度快.纯c语言编写的框架,速度都比php框架快,省去了中间环节.当然,使用它不仅仅是性能考虑.因为如果为了解决php性能问题,完全可以有很多种方式,不 ...
- [改善Java代码]易变业务使用脚本语言编写
建议16: 易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP.Ruby.Groovy.JavaScript等,这些“入侵者”都有一个共同特征:全是同一类语言—脚本语言,它们 ...
- 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库
运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...
- 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取
本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...
- C语言编写的bmp读写程序
C语言编写的bmp读写程序 建议先把bmp的数据存储格式了解下 <span style="font-size:16px;">#include "Windows ...
- 使用C语言编写windows服务一般框架
原文:使用C语言编写windows服务一般框架 编写windows服务和编写windows应用程序一样,有一些回调函数必须填写且向windows 服务管理器(service manager)进行注册, ...
随机推荐
- C# winform编程中多线程操作控件方法
private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart( ...
- hbase日常操作及维护
一,基本命令: 建表:create 'testtable','coulmn1','coulmn2' 也可以建表时加coulmn的属性如:create 'testtable',{NAME => ' ...
- Android IOS WebRTC 音视频开发总结(五七)-- 网络传输上的一种QoS方案
本文主要介绍一种QoS的解决方案,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help QoS出现的背景: 而当网络发生拥塞的时候,所有的数据流都有 ...
- IIS7 配置URL_REWRITE
webconfig 文件 system.webServer节点下配置rewrite 报错 是因为需要安装URL重写 需要安装: https://www.microsoft.com/zh-cn/down ...
- void指针(void*)用法
首先看一段测试代码: #include <stdio.h> int void_test(void* data) { ; num = *(int*)data; printf("nu ...
- css3干货
CSS3是CSS2的升级版本,3只是版本号,它在CSS2.1的基础上增加了很多强大的新功能. 目前主流浏览器chrome.safari.firefox.opera.甚至360都已经支持了CSS3大部分 ...
- Apache中RewriteCond规则参数介绍
Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了.RewriteCond就像我们程序中的if语句一样,表示如果符合某个 ...
- c语言入门教程 / c语言入门经典书籍
用C语言开始编写代码初级:C语言入门必备(以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言的数 ...
- [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库
此为文章备份,原文出处(我的网站) [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库 http://www.dotblogs.com.tw ...
- 在Linux 5/6上使用UDEV SCSI规则配置ASM DISK
格式化磁盘(略) 识别磁盘(/sbin/scsi_id) Oracle Linux 5用如下脚本: #!/bin/sh for i in b c d e f g do echo "KERN ...