CCF-GESP计算机学会等级考试2025年9月三级C++T2 日历制作
本文介绍了一个制作2025年任意月份日历的程序。程序首先输出星期标题(MON-SUN),然后根据2025年各月1日的星期数(预先存储)和当月天数(包含闰年处理),按格式输出日期。每个日期的个位数字与对应星期缩写最后一个字母对齐,每周结束后换行。输入为月份数字(1-12),输出为该月的完整日历表格,如样例所示。程序通过计算日期位置和适当换行来实现对齐要求。
·
B4414 [GESP202509 三级] 日历制作
题目描述
小 A 想制作 202520252025 年每个月的日历。他希望你能编写一个程序,按照格式输出给定月份的日历。
具体来说,第一行需要输出 MON TUE WED THU FRI SAT SUN,分别表示星期一到星期日。接下来若干行中依次输出这个月所包含的日期,日期的个位需要和对应星期几的缩写最后一个字母对齐。例如,202520252025 年 999 月 111 日是星期一,在输出九月的日历时,111 号的个位 111 就需要与星期一 MON 的最后一个字母 N 对齐。九月的日历输出效果如下:
MON TUE WED THU FRI SAT SUN
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
你能帮助小 A 完成日历的制作吗?
输入格式
一行,一个正整数 mmm,表示需要按照格式输出 202520252025 年 mmm 月的日历。
输出格式
输出包含若干行,表示 202520252025 年 mmm 月的日历。
输入输出样例 #1
输入 #1
9
输出 #1
MON TUE WED THU FRI SAT SUN
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
输入输出样例 #2
输入 #2
6
输出 #2
MON TUE WED THU FRI SAT SUN
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
说明/提示
对于所有测试点,保证 1≤m≤121 \leq m \leq 121≤m≤12。
解析
模拟,详见代码:
#include<bits/stdc++.h>
using namespace std;
int m;
int a[13]={0,3,6,6,2,4,7,2,5,1,3,6,1};//a[i]表示第i个月的1日是星期几
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//d[i]表示第i个月有几天
int main(){
int m;
cin>>m;
cout<<"MON TUE WED THU FRI SAT SUN\n";
for(int i=1;i<a[m];i++){
cout<<" ";
}
for(int i=1;i<=d[m];i++){
cout<<setw(3)<<i;
if ((i+a[m]-1)%7==0){//星期日之后换行
cout<<"\n";
}else{
cout<<" ";
}
}
return 0;
}
更多推荐



所有评论(0)