只是小的进步,毕竟是自己想出来的,保留下来,以鼓励自己继续努力:
#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