1 条题解

  • 0
    @ 2026-2-28 10:42:24
    #include <bits/stdc++.h>
    using namespace std;
    
    int arr[13]={0 , 3 , 6 , 6 , 2 , 4 , 7 , 2 , 5 , 1 , 3 , 6 , 1};// [1] arr-2025年各月1日对应的星期序号(1=周一,7=周日)
    int brr[13]={0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31};// [2] brr-2025年各月的总天数
    
    int main(){
        int n;// [3] n-用户输入的目标月份
        cin >> n;// [4] 读取输入的月份数值
        cout << "MON TUE WED THU FRI SAT SUN" << endl;// [5] 输出日历星期表头
        int cishu = brr[n] + arr[n] -1;// [6] cishu-当月需要输出的总位置数(前置空位置+总天数)
        
    	int i = 1;// [7] i-循环遍历的位置序号,从1开始计数
        // [8] 核心循环:遍历所有输出位置,逐列生成日历内容
    	while(i <= cishu )
    	{
            int num = i - arr[n] + 1 ;// [9] num-当前位置对应的日期数值,<1表示无有效日期
            
            // [10] 分支:当前位置无有效日期,输出3个空格占位对齐
    		if( num < 1){
    			cout << "   ";
    		}
            // [11] 分支:个位数日期,输出2空格+数字保证右对齐
    		else if( num >= 1 && num <= 9 ){
    			cout << "  " << num;
    		}
            // [12] 分支:两位数日期,输出1空格+数字保证右对齐
    		else{
    			cout << " " << num;
    		}
            
            // [13] 分支:每满7个位置(一行结束),输出换行符
    		if( i > 1 && i % 7 == 0){
                cout << endl;
            }
            // [14] 分支:非行尾位置,输出列间隔空格
            else{
                cout <<" ";
            }
    
    		i++;// [15] 位置序号自增,进入下一个位置
    	}
    	return 0;
    }
    

    信息

    ID
    979
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    4
    已通过
    1
    上传者