算法学习之路|一个简单的多行万年历

简介: 一个简单的多行万年历

题目简介:一个入门级的小项目。

多行万年历

输入一个年份+行数

以每行n个输出万年历形式的月份

详情见代码:

//多行万年历
//思路就是把输入的每一年存入数组中,再根据输入行数格式化输出

#include <iostream>
using namespace std;
bool isrui(int );//判断是否为瑞年
int week(int );//判断每年的第一天为周几
int day(int month,int year);//判断这个月多少天
int main(){
    int year,line;
    int date[12][42]={0};
    cin>>year>>line;
    for(int m=0,start=week(year);m<12;m++){
        for(int i=(start+=day(m,year))%7,sq=1;sq<=day(m+1,year);){
            date[m][i++]=sq++;
        }
    }//把输入的年份所有天数存入数组
    for(int i=1;i<=12;i+=line){
        for(int n=0;(12-i>line)?(n<line):(n<12-i+1);n++){
            printf("%4s%4s%4s%4s%4s%4s%4s","SUN","MON","TU","WE","TH","FR","ST");
            cout<<"  ";
        }//按需输出标题
        cout<<endl;
        for(int l=0;l<6;l++){
            for(int n=1;n<=line;n++){
                for(int j=0;j<7;j++){
                    if(i-1+n-1>11) break;
                    if(date[i-1+n-1][j+7*l]==0)
                        printf("%4s"," ");
                    else
                        printf("%4d",date[i-1+n-1][j+7*l]);
                }
                cout<<"  ";
            }
            cout<<endl;
        }//按需输出格式化天数
    }
    return 0;
}
int day(int month,int year){
    if(month==0){
        return 0;
    }
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
        return 31;
    }
    else if(month==2&&isrui(year)){
        return 29;
    }
    else if(month==2&&!isrui(year)){
        return 28;
    }
    else{
        return 30;
    }
}
int week (int year){
    return (((year-1)*365)+((year-1)/4)-((year-1)/100)+((year-1)/400+1))%7;
}
bool isrui(int year){
    if ((year%4==0&&year%100!=0)||year%400==0){
        return true;
    }
    else{
        return false;
    }
}
目录
相关文章
|
2月前
|
机器学习/深度学习 数据采集 搜索推荐
Paper Digest | 突破个性化推荐数据稀疏性:长尾增强的图对比学习算法研究
本文提出了一种新的长尾增强的图对比学习方法(LAGCL),该方法促使模型同时兼顾头部节点与尾部节点之间的知识,并通过长尾增强技术来使模型产出更均匀更准确的节点表征,从而改进基于 GNN 的推荐任务。
|
2月前
|
算法 网络协议 Linux
【Cisco Packet Tracer】交换机的自学习算法
【Cisco Packet Tracer】交换机的自学习算法
54 0
|
3月前
|
算法 安全 数据安全/隐私保护
C/C++学习 -- RSA算法
C/C++学习 -- RSA算法
34 0
|
3月前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
32 1
|
8天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。
|
8天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
18 0
|
15天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
1月前
|
Rust Dart 算法
55.3k star!开源算法教程,附带动画图解,学习算法不再苦恼!
55.3k star!开源算法教程,附带动画图解,学习算法不再苦恼!
|
1月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
|
1月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Canny边缘检测算法
Opencv(C++)学习系列---Canny边缘检测算法