要求输入年月,输出对应的月历表,月历表要契合标准日历,第一行从星期一开始,星期日结束。
2条回答 默认 最新
- 技术专家团-小桥流水 2021-10-27 18:07关注
代码如下,如有帮助,请帮忙采纳一下,谢谢。
效果图是输入2018 5代码:
#include <stdio.h> int main() { int year,mon; int i,j,cnt = 0; int t = 1,k=1; int arr[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int curYear,curMon,curDay, wk; curYear = 2021; curMon = 10; curDay = 27; wk = 3; scanf("%d %d",&year,&mon); if(curYear >= year) { for(i=mon;i<=12;i++) { if(i==2) { if(year%4==0 && year%100 !=0 || year%400==0) cnt += 29; else cnt += 28; }else cnt += arr[i]; } for(i=year+1;i<curYear;i++) { if(i%4==0 && i%100 !=0 || i%400==0) cnt += 366; else cnt += 365; } for(i=1;i<curMon;i++) { if(i==2) { if(curYear%4==0 && curYear%100 !=0 || curYear%400==0) cnt += 29; else cnt += 28; }else cnt += arr[i]; } cnt += curDay; wk = 7 - (wk+cnt)%7; }else { for(i=curMon+1;i<=12;i++) { if(i==2) { if(curYear%4==0 && curYear%100 !=0 || curYear%400==0) cnt += 29; else cnt += 28; }else cnt += arr[i]; } for(i=curYear+1;i<year;i++) { if(i%4==0 && i%100 !=0 || i%400==0) cnt += 366; else cnt += 365; } for(i=1;i<mon;i++) { if(i==2) { if(year%4==0 && year%100 !=0 || year%400==0) cnt += 29; else cnt += 28; }else cnt += arr[i]; } cnt += curDay; wk = (wk+cnt-1)%7; } printf("一 二 三 四 五 六 日\n"); //int t = 1,k=1; if(year%4==0 && year%100 !=0 || year%400==0) arr[2]= 29; while(t <= arr[mon]) { if(k<wk) { printf(" "); }else { printf("%-3d",t); t++; } if(k%7==0) printf("\n"); k++; } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 4无用