当前位置:  编程技术>c/c++/嵌入式

C语言实现的一个万年历小程序

    来源: 互联网  发布时间:2014-10-25

    本文导语:  该程序简单地输入一个年份(1901年之后的年份),随后程序输出该年份十二个月的日历。 #include #define Mon 1 #define Tues 2 #define Wed 3 #define Thur 4 #define Fri 5 #define Sat 6 #define Sun 0 #define January_days 31 #define February...

该程序简单地输入一个年份(1901年之后的年份),随后程序输出该年份十二个月的日历。

#include

#define Mon   1
#define Tues  2
#define Wed   3
#define Thur  4
#define Fri   5
#define Sat   6
#define Sun   0

#define January_days   31
#define February_days   28
#define March_days    31
#define April_days    30
#define May_days     31
#define June_days     30
#define July_days     31
#define August_days    31
#define September_days  30
#define October_days   31
#define November_days   30
#define December_days   31

#define first1month January_days
#define first2month January_days+February_days
#define first3month January_days+February_days+March_days
#define first4month January_days+February_days+March_days+April_days
#define first5month January_days+February_days+March_days+April_days+May_days
#define first6month January_days+February_days+March_days+April_days+May_days+June_days
#define first7month January_days+February_days+March_days+April_days+May_days+June_days 
	         +July_days
#define first8month January_days+February_days+March_days+April_days+May_days+June_days 
	         +July_days+August_days
#define first9month January_days+February_days+March_days+April_days+May_days+June_days 
	         +July_days+August_days+September_days
#define first10month January_days+February_days+March_days+April_days+May_days+June_days 
	         +July_days+August_days+September_days+October_days
#define first11month January_days+February_days+March_days+April_days+May_days+June_days 
	         +July_days+August_days+September_days+October_days+November_days

int known_weekday = Tues;
int known_year = 1901;
int konwn_month = 1;
int known_day = 1;

int day_count(int month)
{	
	switch(month)
	{
		case 1: return 0;break;
		case 2: return first1month;break;
		case 3: return first2month;break;
		case 4: return first3month;break;
		case 5: return first4month;break;
		case 6: return first5month;break;
		case 7: return first6month;break;
		case 8: return first7month;break;
		case 9: return first8month;break;
		case 10: return first9month;break;
		case 11: return first10month;break;
		case 12: return first11month;break;
	}
}


/*char * month_name(int month)
{
	switch(month)
	{
		case 1:
			return "January";
			break;
		case 2:
			return "February";
			break;
		case 3:
			return "March";
			break;
		case 4:
			return "April";
			break;
		case 5:
			return "May";
			break;
		case 6:
			return "June";
			break;
		case 7:
			return "July";
			break;
		case 8:
			return "August";
			break;
		case 9:
			return "September";
			break;
		case 10:
			return "October";
			break;
		case 11:
			return "November";
			break;
		case 12:
			return "December";
			break;
		default:
			break;
	}
}*/

char * month_name(int month)
{
	switch(month)
	{
		case 1:
			return "一月";
			break;
		case 2:
			return "二月";
			break;
		case 3:
			return "三月";
			break;
		case 4:
			return "四月";
			break;
		case 5:
			return "五月";
			break;
		case 6:
			return "六月";
			break;
		case 7:
			return "七月";
			break;
		case 8:
			return "八月";
			break;
		case 9:
			return "九月";
			break;
		case 10:
			return "十月";
			break;
		case 11:
			return "十一月";
			break;
		case 12:
			return "十二月";
			break;
		default:
			break;
	}
}

/*按格式打印某年某月名称*/
void first_line_print(int month, int year)
{
	//printf("%20s %d n",month_name(month),year);
	printf("%8d年 %s n",year, month_name(month));
}

/*按格式打印星期名称*/
void week_print()
{
	//printf("%-6s%-6s%-6s%-6s%-6s%-6s%-6sn","Sun.", "Mon.", "Tues.", "Wed.", "Thur.", "Fri.", "Sat.");
	printf("%-3s%-3s%-3s%-3s%-3s%-3s%-3sn","日", "一", "二", "三", "四", "五", "六");
}

/*计算该年该月份与已知日子之间的距离天数*/
int date_distance_count(int month, int year)
{
	int leap_year_count = 0;
	int i;
	int distance;

	if (year > known_year)
	{
		for (i=known_year; i 2)
		{
			if(((year%4 == 0) && (year%100 != 0) ) || (year%400 == 0))
			{
				leap_year_count++;		
			}
		}
	}
	else
	if (year == known_year)
	{
		if (month > 2)
		{
			leap_year_count = 1;
		}
	}
	

	distance = (year - known_year)*365 + leap_year_count + day_count(month);

	return distance;	
}

/*确定该月份第一天是星期几*/
int makesure_firstday_weekday(int month, int year)
{
	int date_distance = 0;
	int weekday;

	date_distance = date_distance_count(month, year);
	weekday = (known_weekday + date_distance)%7;

	return weekday;	
}

/*依次打印出该月份的日子*/
void print_in_turn(int month, int firstday, int year)
{
	int i = 1;
	int weekday;

	switch(firstday)
	{
		case Sun:
			break;
		case Mon:
			printf("%-3s","");
			break;
		case Tues:
			printf("%-6s","");
			break;
		case Wed:
			printf("%-9s","");
			break;
		case Thur:
			printf("%-12s","");
			break;
		case Fri:
			printf("%-15s","");
			break;
		case Sat:
			printf("%-18s","");
			break;
	}

	switch(month)
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
		{
			for(i=0; i

    
 
 

您可能感兴趣的文章:

  • c语言判断某一年是否为闰年的各种实现程序代码
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • c语言实现MD5算法完整代码示例
  • 网站重定向用C语言实现iptables,ACL实现
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • C语言实现的mogstored守护进程 cmogstored
  • c语言基于libpcap实现一个抓包程序过程
  • Linux 下的C语言实现数据库连接池操作。
  • MD5算法的C语言实现
  • 如何在linux下用c语言实现ftp编程
  • C语言的KD树实现 kdtree
  • 如何实现类似PHP.PB等语言中eval的函数功能?
  • 怎样用JAVA语言实现对串口的操作?
  • 请问《软件工程java语言实现》一书在那里能下载
  • R语言的Java实现 FastR_
  • LINUX下用C语言实现修改目录名字。
  • 求在linux下用c语言实现数据库连接池的操作。
  • linux下FTP服务器与客户端的C语言实现
  • 类似于Shell界面下setup命令的文本模式菜单用C语言如何实现
  • PHP 语言实现 HippyVM
  • java语言实现监控程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 2013年7月和2013年8月编程语言排行榜
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • 动态编程语言 LIME编程语言
  • HTML超文本标记语言教程及实例
  • C语言如何改变当前语言环境
  • HTML 脚本语言介绍及<script>标签用法
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • HTML 超文本标记语言简介
  • java/j2ee iis7站长之家
  • HTML语言特殊字符大全及其编码对照表(包括转义方式)
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!
  • 据说这是史上最变态的6个C语言Hello, World程序
  • 可不可以这样认为!c语言是一道唯一指向操作系统的语言,精通了它,就了解了操作系统?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3