只是小的进步,毕竟是自己想出来的,保留下来,以鼓励自己继续努力:
#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;
}
转载于:https://blog.51cto.com/swordautumn/1655461