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