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)进行注册, ...
随机推荐
- SQL 数据库 复制 与订阅 实现数据同步
摘自: http://www.jb51.net/article/18039.htm
- C puzzles详解【38-45题】
第三十八题 What is the bug in the following program? #include <stdlib.h> #include <stdio.h> # ...
- BGP学习笔记
源自红茶三杯: BGP应用于大规模网络或运营商,用作在AS间传递路由信息 使用BGP的三大理由 1. 大量路由需要承载, IGP只能容纳千条,而BGP可以容纳上万(应该是IGP结合BGP使用?) 2. ...
- asp 301跳转代码
<% Response.Status="301 Moved Permanently" Response.AddHeader "Location&quo ...
- php 执行事务的时候pdo出现问题
新版本的pdo会有这个问题: General error: 2014 Cannot execute queries while other unbuffered queries are active. ...
- 一款jQuery满屏自适应焦点图切换特效
一款jQuery满屏自适应焦点图切换特效 ,自适应当前浏览器的宽度,可以作为网站整个大背景的却换效果,很不错的一款不jquery特效. 兼容性没的说直接秒杀了IE6.适用浏览器:IE6.IE7.IE8 ...
- Internet Explorer 无法启用 JavaScript 怎么办?
在 Internet Expllorer 8/9 中,有些同学在浏览网页时,收到提示:“需要启用 JavaScript …”,并且会发现网页上某些功能不能用了,比如点击网页里的按钮没反应等等. 怎么启 ...
- 银河英雄传说 (codevs 1540) 题解
[问题描述] 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰 ...
- C#从数据库读取数据到DataSet并保存到xml文件
using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.IO; pub ...
- JDBC基础一
JDBC:java database connectivity SUN公司提供的一套操作数据库的标准规范. JDBC与数据库驱动的关系:接口与实现的关系. JDBC规范(掌握四个核心对象): Driv ...