码迷,mamicode.com
首页 > 其他好文 > 详细

计算某年各月的天数

时间:2015-05-27 01:06:16      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:月的天数   大小月   异或   

  只是小的进步,毕竟是自己想出来的,保留下来,以鼓励自己继续努力:

#include <stdio.h>

int isLeap(int y);
int dofm(int m, int y);

int main(void)
{
	/* 测试月份的第一位和第四位,异或为1代表大月31天,反之30天 
	int a=0;
	for(a=1; a<=12; a++)
		printf("%x,%x,%x\n", (a & 8)>>3, a & 1, ((a & 8)>>3) ^ (a & 1) );
	*/
	int year, month, days;
	printf("请输入一个公元年(如2015):");
	scanf("%d", &year); 
	printf("%d年各月天数:\n", year);
	for(month=1;month<=12;month++){
		printf("%d月有%d天。\n", month, dofm(month, year));
	} 
	return 0;
}

int isLeap(int y)
{
	return (y%4==0 && y%100!=0 || y%400==0);
}

int dofm(int m, int y)
{
	int d;
	if(m!=2)
		d = ((m&8)>>3)^(m&1)?31:30;
	else 
		d = isLeap(y)?29:28;
	return d;		
}


本文出自 “StudyPark” 博客,请务必保留此出处http://swordautumn.blog.51cto.com/1485402/1655461

计算某年各月的天数

标签:月的天数   大小月   异或   

原文地址:http://swordautumn.blog.51cto.com/1485402/1655461

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!