IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> (蓝桥杯)c/c++判断数组中是否含有另一个数组,蔡基姆拉尔森公式,判断星期几 -> 正文阅读

[C++知识库](蓝桥杯)c/c++判断数组中是否含有另一个数组,蔡基姆拉尔森公式,判断星期几

判断数组中是否含有另一个数组
示例
输入asd asdas d
asd
输出2

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
    char s1[1005];    //第一个数组
    char s2[1005];    //第二个数组
int main() {
    fgets(s1,1004,stdin);   //留一位给\0?
    fgets(s2,1004,stdin);
    int len1 = strlen(s1)-1; //数组里会把回车也当作元素储存,所以-1
    int len2 = strlen(s2)-1;
    int c = 0;
    for (int i = 0; i < len1-len2+1; i++) { //len1-len2+1 如果第二个数组的长度是3,那么数组1判断到还剩下2个元素的时候就可以停止了
        bool key = true; 
        for (int j = 0; j < len2; j++) {  
            if (s2[j]!=s1[j+i]){  //j+i是因为要从数组1的第i位开始判断,顺便每次+1
                key = false;
                break;
            }
        }
        if (key == true){
            c++;
        }
    }
    cout <<c;
}

主要就是要注意如何挨着判断

判断闰年:
1.年份非整且能被4整除
2.年份能被400整除

if(y%400==0||(y%100!=0&&y%4==0)){
	cout << "闰年";
}

判断星期几
蔡基姆拉尔森公式
设星期为w,年份为y,月份为m,日期为d
w=(d+2m+3(m+1)/5+y+y/4-y/100+y/400)%7
注意,每年的1,2月份要当做上一年的13,14月份来算,且均为整除

如果是按照正常的算法来计算周几,取1年1月1日为周一

#include <iostream>
using namespace std;
bool runYear(int y){
    if ((y%100!=0&&y%4==0)||y%400==0){
        return true;
    } else
        return false;
}
int thirty_oneDay(int m){
    if (m==1||m==3||m==5||m==7||m==8||m==10||m==12){
        return 1;
    } else if (m==4||m==6||m==9||m==11){
        return 2;
    } else{
        return 3;
    }
}
int whatday(int y,int m,int d){
    int num = 0;
    for (int i = 1; i < y; i++) {
        if (runYear(i)){
            num +=366%7;
            num %=7;
        } else{
            num +=365%7;
            num %=7;
        }
    }
    for (int i = 1; i < m; i++) {
        if (thirty_oneDay(i)==1){
            num+=31%7;
            num %=7;
        } else if(thirty_oneDay(i)==2){
            num +=30%7;
            num %=7;
        } else{
            if (runYear(y)){
                num +=29%7;
                num %=7;
            } else{
                num +=28%7;
                num %=7;
            }
        }
    }
    num +=num%7;
    num %=7;
    return num;
}
    int main(){
    int y,m,d=0;
    cin >> y >> m >> d;
        cout << whatday(y,m,d);
    }

需要注意的就是
num +=x%7;
num %=7;
这两个操作,一个是用时间取余7,就是要过了一年/一月的1号是周几,第二个就是把num变成周几,防止加上上一个周几后大于7。
很麻烦
能记住公式就记住公式,代码如下:

int main(){
    int y,m,d=0;
    cin >> y >> m >> d;
        if (d%7==1||d%7==2){
            m+=12;
            y--;
        }
        cout << (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
    }
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:35:33  更:2022-10-31 11:38:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 5:59:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码