当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。 没啥思路,求大佬给点思路意见
1条回答 默认 最新
技术专家团-小桥流水 2021-11-19 16:29关注参考如下:
#include <iostream> using namespace std; 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 if(curYear == year) { if (mon > curMon) { for(i=curMon+1;i<mon;i++) { if (i==2) { if(curYear%4==0 && curYear%100 !=0 || curYear%400==0) cnt += 29; else cnt += 28; }else cnt += arr[i]; } cnt += arr[curMon] - curDay; wk = (wk + cnt%7)%7+1; }else if(mon == curMon) { wk = (wk +7- (curDay-1)%7)%7; }else { for (i=mon;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 = (wk+7-(cnt-1)%7)%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; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报 编辑记录无用 2