1.目的:
培养逻辑思维的严密性
提高利用C语言进行程序设计的能力
2.要求:
(1)输入年份,判断是否为闰年
(2)输入年月日,判断是星期几
(3)输入年份,打印出12个月的月历
(4)输入年月,打印出本月的日历
#includeusing namespace std; typedef long long ll; typedef long double ld; typedef pair pii; const int inf = 0x3f3f3f3f; const int maxn = 1e6 + 5; void runnian(int year1) { if (year1 % 4 != 0) printf("%d年不是闰年n", year1); else if (year1 % 100 == 0 && year1 % 400 != 0) printf("%d年不是闰年n", year1); else printf("%d年是闰年n", year1); } void xinqi(int iY, int iM, int iD) { int iWeekDay = -1; if (1 == iM || 2 == iM) { iM += 12; iY--; } iWeekDay = (iD + 1 + 2 * iM + 3 * (iM + 1) / 5 + iY + iY / 4 - iY / 100 + iY / 400) % 7; switch (iWeekDay) { case 0: cout << "Sundayn"; break; case 1: cout << "Mondayn"; break; case 2: cout << "Tuesdayn"; break; case 3: cout << "Wednesdayn"; break; case 4: cout << "Thursdayn"; break; case 5: cout << "Fridayn"; break; case 6: cout << "Saturdayn"; break; } } void yueli(int n) { int a,b,c,xinqi,i,j,num,temp1,temp2,temp3; a = n/100; b = n/4; c = (n+b-a)%7; if(c<=2) xinqi = c+5-((n%4==0)&&(n%100!=0)||(n%400==0)); else { xinqi = c-2-((n%4==0)&&(n%100!=0)||(n%400==0)); if(xinqi == 0) xinqi = 7; } for(i = 1; i <= 12; i++) { printf("Sun Mon Tue Wed Thu Fri Satn"); temp1 = 1; if(i==2) num = 28+((n%4==0)&&(n%100!=0)||(n%400==0)); else if(i%2 != 0) { if(i >=1 && i<= 7) num = 31; else num = 30; } else if(i%2 == 0) { if(i >= 4 && i <= 6) num = 30; else num = 31; } if(xinqi == 7) { temp2 = 0; temp3 = 7; xinqi = num%7; } else { temp2 = 4*xinqi; temp3 = 7-xinqi; xinqi = num+xinqi-28; if(xinqi>7) xinqi = xinqi%7; } for(j = 1; j <= temp2; j++) printf(" "); while(temp1 <= num) { printf("%3d ",temp1++); if(temp1==temp3+1 || temp1==temp3+8 || temp1==temp3+15 || temp1==temp3+22 || temp1==temp3+29) printf("n"); } cout< > n >> y >> r; runnian(n); xinqi(n, y, r); yueli(n); rili(n, y); return 0; }



