150 lines
28 KiB
C++
150 lines
28 KiB
C++
// Created by Ricsae on 2024/11/13.
|
||
#include <bits/stdc++.h>
|
||
using namespace std;
|
||
#define int long long
|
||
#define 初始化 system("CHCP 65001");system("cls");for(char i:str1)_str[0]+=i;for(char i:str2)_str[1]+=i;
|
||
#define Fexit system("pause");system("cls");break;
|
||
#define Fexit2 _sleep(300);printf_purple("请按下任意按键。");getchar();system("cls");break;
|
||
#define WTF cout <<" \n.i.:.....................:...:.:::::.:::::.....:.......:.:::...........:.::....:::.:::::::::::.............. . ....... .i:::::::::..:.....:\n"":7iii:i:i:i:::::::::i::iiiiiiiiiiiiiirrrrii:iiiii::.::iiiirii:i:i:iiiiiiririiiiiriiiiiriiiiirii::::::::::::.:.::::::i. i7ririririiii::::::i\n"".i.:.:.:...............:.:.:::::::::::::::::.:::.....:.:::::.....::::::i:i:i:i::::::::::::::::........................ :i::::::::::.......:\n"".i:.:.:...:.............:::::::::::::::::::.:::::.....::::i::::::::.. ....::i:::::::i:i::.:....................... :::::::::::::......:\n"".i.:.:.:.........:.:.:.:::::::::::::::::::::.::::....::::ii:.. .:::i::::::i:::...................:.. :i::::::::::::.....:\n"":::.:...:.........:.:.:::::::::::::::::::::.:.:::...:::.. . .:::...................: i::::::::::::...:..:\n"".i.:.:.:.....:.......:.:::::::::::::::::::::::::::.. :::::.................. .:i:::::::::::......:\n"".i:.:.:.:.:.:.........:::::::::::::::::::::::::.. .:::............... .i::::::::::::......:\n"".:.:.:.............:.:.::::::::::::::::::i:: .::::............ .ii:::::::::::......:\n"":::.:.:.:...:.......:.::::::::::::::::ri:. ..:::........ .i::::::::::::......:\n"".i.....:...:.:.....:.:.::::::::::::iiri. ...:..... :ii::::::::::...:...:\n"".:......:.:.:.........::::::::::::iii. ..:.. :i::::::::::::......:\n"".i.......:.:.........:.::::::::::ii. .:. :ii::::::::::::.....:\n"".:..:.:...:.....:...:.::::::::::ii. .. :i::::::::::::......:\n"".i...:.:.....:...:.:.::::::::::i: ..:i:::::::::::.......:\n""::..:.:::...:.:.:.:.:::::::::::: .ir:i::::::::::......:\n"".i...:::.:.:.:.:.:.:.:::::::::. :ii::::::::::.:.....:\n"".:..:.:.:.:.:.:.:.:.:::::::::. :ii::::::::::......:\n"".i...:.:.:.:.:.:.:.:.:::::::: .:i::::::::.......:\n"".:..:.:...:.:.:...:.:.::::::. .:i::::::::......:\n"".i.:.:.....:.:.:...:.::::::: .:i::::::.......:\n"".:....:.:.:::.:.:.:.:.:::::. :r: .:i::::::......:\n"".i...:.:.:::.:.:.:.:.::::::: rjUJ: .:.::i7r. .i::::.......:\n"".:......:.:.:.:...:.:.::::i. 7ZR2r. ..::iii:7vY7i. ::::::......:\n"".:.......:::.:.:.....::::::. iX27: ::iiriir7YYLYr: .::::.......:\n"".:..:....::.:.......:.::::: i: ..::ririrr7vsJj7r:. :::::......:\n"".:.:.....:::.:.:.....:::::. .u1 . :iiirrrrir77vvL7ri:. .::::......:\n"".:......:::.........::::::: LPU: ..:.::iiri7r7rrirrrrrii:::. .i.:.......\n"".:.......:::........:::::::. rsvYvYLvvYsY777v77ii::::::.. .:........:\n"".:......:::.:.......:::::.:. ivYssjYU2XSSSS2Ijvrrii:i::. :........:\n"".i.......:..........:::::::: .::rr .:rv7vLu152XSqIIuusYvv77ii. .:.......:\n"".:......:::...:.....:::::.:: .2BBBBBQui:. :ir7vvv7v7LvJuISKUjLL77rr :.:......:\n"".:.....:.:.........:::::.::: 7DBQBBRKuYvri:. ..ii777irir:.. . .:.......:\n"".:..................:::::.::. .ri .iv7i.....irv77::.... ...:......:\n"".:.................:::::.:::. rvYr .:...:iv5X5vi.....:........ ..........:\n"".:..............:..::.:::.::: 777rrr777riii:. .7i :iri7L5qESsi...:ir7Y5bgDg2Uj7:. ..........:\n"".:.............:...:::::... rrrrv7v1U1s7v777Lriirir5IsLvuUqPJr: .:irv2SdQBBBg2Uvr: ..:.......:\n"".:............:...:.:.:.:.:.i: :rrrvLjjIUUYYYv77r77vJSPKJ7r7LXSur: .i77: .:rii:. ..:........:\n"".:...........:.:...:.:.:.:rJM: irr7JS5dbbPKU2UIUS5PKPP27v777USuri. .rj7 ...........:\n"".:..................:.:..:vqX .rr7j25bPDEgZZbdbdEDbb2J77777jqXr:.....r7r7L7r.. .............\n"".:.................:.:::.:7q7 ir7v5IPqEEgEDZgEdEDDDqU77rrrY1qui.....:ivrrri:i:iii:. .:...........:\n"".:..................:.::..7Ur ir7sSPEggQQQQBQBBBRgIjrririv2bS7:.....:rvJ7vvvrrrririi:.. ::...........:\n"".:..................::::.:r2v ii7712PEgRQRBQQDbsriiiri7vsSgdIvi.....irvU1YjJI2SSbPKUsLvr:... :::...........:\n"".:..................:.:..:LjJ. .ir771USKdP5U2Liiiir7JvIPQBBBQSU7:....i7JX5U1uu21XXSXbPPIJ7r:::. ....:...........\n"".:.................:::::.:vJr. .iii7r7vYvYrrriirr77Lrr7gBBBBBPJvi:. i72PEqP255XKbPPPPS5UL7rii.. ................:\n"".:..................:::.::77i. .iiiirrrr7rrrrr7vYvr .:7Jvi:irri: :v2EPEPbKdPdPdbqI1YL7rii::. ..:...............\n"".:.....:.:.........:.:::.:i7i. :iiiirrrrrrrvv11uvvr. ii.. :7uIXqdKbqKPb5SU1Yv77ri::.. :::::...............:\n"".:..................:.:::.ivs: :rirrrr7r77j2S22Yv77r77Y7i :7ruUS2S5S25U2JY77rrii::.. :i::::::...............\n"".:...................:::..:77: :iiirr7r7L2u1uuJLvv7v7YsjjUsr.. .ir77uuuuUjjYv77rrri::.... .i::::.:...............:\n"".:..................:.:::.:::..:iiir7r77Lu1vsvsYJv7r77v7Yj2JY7v77r7r77v7vvJ7v7v77rrii::.... :::::::.:...............\n"".:...................:.:::::...::ii7r77v7vvYLv7vrriiirrrrvLJYsvYvLvJLYvLvvv777rrir::... ... .ii::::::...:...........:\n"".:..................:.:.:.:.:...::ii7r777i:. ..::rvJv7777L7YYL7vr7iiii::.. :YbI. ... :i::::::.:..............:\n"".:.................:.:.:...:....:::rr7rrii. .:. .iLYL77rvvv7vrrii::... :MBBBi .... :::::::::.:.............:\n""::..................:.:.:.:.:...::::rr7rrrr: .7dQbsui :7v7rrvv7rriri:... vBBBQr ...... .:::.:::::.:............:\n"".:.................:.:.:.:.:.....::::rirr7r7i:::. . ::rrv77rri:::. BBBB7 ....... :::.:.:.:...............:\n"".:................:.:.:::.:.:....:::iirrrrrrr::ivJI1J7i.. .. :irrrrii:... 7Yi ... ..... :i::.:.:.:..............:\n"".:.................:.:.:.:.:.....::::irrr7rrrr:::iir7s2qDMK2vr:.. ..::iii::::.. . . . .:.:. i::::.:.:.:.:...........:\n""..................:.:.:.:::.:.....:::irr7r777ii:. ..:rrrii:i::.... ... .::::. ..:.... .::.:::::.:.:.............\n"".:.............:...:.:.:.:.:::.......:i7r77v77ii:... .::iiiii::::.. ... ..... .i::.:::::...............:\n"".:................:::.:.:::.:.:.....::rrrrr7v7v77ri:i:i::::...::::i:i:i::. ........ .i:::::::.:...............\n"".:.................:.:.:.:::.:.... ..:irr7r77vjSS55X1Y77r7rrii:i:iiiii:. ......... .i::::.:.:...............:\n""..................:::.:.:.:.:.:::.. ..:i7r77vvu1X5qXKUs7v777rrririiiri. ........... .::.:.:.:.:...............\n"".. ................:.:::.:::.:::::.....:r7r77vvsJUu21svv7v77rrrriiii:. ............ .:.:.....:...............:\n""... ..............:.:.:.:.:.::::::::. .irrr7rvvL7LvL7vrrrrir:i::::.. ............. .:......:.................\n"".. ................:.:.:.:.:.::::i:... ..::iirrrrririi::::.:..... .............. .:.......................:\n""... ..............:.:::::.:.::i:: :::. ............... . .............. ..........................\n"".. . ..............:::::::::ii. :ii::.. ii:.................. ....................:\n""... . .............::.::ii:. iiii::.. .i::................ . ....................\n"".: ..............:.::::i:. 7Bi:iri::.. ::................ .... . ..................:\n""................::::::: YBS.:irir::... 7 .:.............. ..........................\n"".:.......:...:.::::. .QB :iiiririi::... .B. ............... ::.....:.................:\n"".:....::::::::::. BB irirrrrrii:i::.... :B2 ............ :::.......:..............:\n"":r:... :BB rrrirrriiirii::::.... . . . 7Bg .......... .::::.:...................:\n"" . DBB irrrrrrririr:i:::i:i::.. ... . . gQM .:...... .i::.:.:.:.:...............\n"" rBBB .irirrrrrrrii:::iiiiii: . ......... . 7QMQ .:... :::::::...:...............:\n"" gQBBQ irrrrrrirrrii:::i:iii. . ........... . rBQdB ... :r::::.....................\n"" .BEDBBr .rr7r7rrrririi:::iii:. . .................. rBBZDQ :iii::.:.................:\n"" rBEqBBB. .rrrr7rrrrrri:...:.. ...................... YBBDPZB :::::................:\n"" 7BKXqBBB .irrrrrrrrir::.. .............:....... QBBgPqgM ..:::.:::::.......:\n"" dBBBBBBBB7.ivsU22uJvLvv7r:i.:.::iiiiiiriiiriiiiii:i::LBQBBBBBBB ..:::..:";
|
||
int y,m,d,cishu=0;
|
||
string _str[2]={"",""};
|
||
string encodedStr = "|%E9%83%91%E4%B8%96%E5%87%AF";
|
||
string decodedStr = "%E8%B0%81%E5%91%8A%E8%AF%89%E4%BD%A0%E8%BF%99%E4%B8%AA%E5%BD%A9%E8%9B%8B%E7%9A%84";
|
||
string wk_zh[7]={"日","一","二","三","四","五","六"};
|
||
string wk_en[7]={"Su","Mo","Tu","We","Th","Fr","Sa"};
|
||
const int str1[]={56,56,50,50,52,54,52,54,66,65};
|
||
const int str2[]={56,56,50,50,52,54,52,54,98,97};
|
||
const int runPing[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31},};
|
||
|
||
int WeekDay(int y,int m,int d){
|
||
if(y<1582||y==1582) {if(m<10||(m==10&&d<5))d+=3;else if(m==10&&(4<d&&d<15))return -1;}
|
||
if(m<3){y--;m+=12;}return ((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1)%7;
|
||
}//相关:https://zh.wikipedia.org/zh-cn/%E8%94%A1%E5%8B%92%E5%85%AC%E5%BC%8F
|
||
int IsLeapYear(int year) {/*if(year<0)return -1;*/return ((year%4==0&&year%100!=0)||(year%400==0));}
|
||
int to_int(string s){int ans=0,k=0;for(char i:s)if('0'<=i&&i<='9'){ans=ans*10+(i-'0');k++;}if(!k)return 0;else return ans;}
|
||
bool IsTureData(){if(d==0)return false;if(m==0)y--,m=12;if(m>12)return false;if(d>runPing[IsLeapYear(y)][m])return false;return true;}
|
||
//颜色字
|
||
string ToString(int n){string t=" ";char tm;if(n<10){tm=n+'0';t+=" ";t+=tm;return t;}else{tm=n/10+'0';t+=tm;tm=n%10+'0';t+=tm;return t;}}
|
||
string ToStringB(int n) {string result;while (n > 0) {result.push_back('0' + (n % 10));n /= 10;}reverse(result.begin(), result.end());return result;}
|
||
void print(const char* s) { printf("\033[0m\033[1;32m%s\033[0m", s); }
|
||
void printf_red(const char* s) { printf("\033[0m\033[1;31m%s\033[0m", s); }
|
||
void printf_blue(const char* s) { printf("\033[0m\033[1;34m%s\033[0m", s); }
|
||
void printf_purple(const char* s) { printf("\033[0m\033[1;35m%s\033[0m", s); }
|
||
void print_cd(int time,const char* s) {_sleep(time);printf_blue(s);}
|
||
void clearInput() {/*清除错误状态*/
|
||
cin.clear();/*辅助函数,用于清理输入流*/
|
||
cin.ignore(numeric_limits<streamsize>::max(), '\n'); /*忽略错误输入*/
|
||
printf_red("非法输入,请重新输入!\n");
|
||
}
|
||
void getdata(int n) {d=n%100,m=(n/100)%100,y=n/10000;}
|
||
void ToTrueDate() {/*int& y, int& m, int& d*/
|
||
while(m>12)m-=12,y++;
|
||
while(d>runPing[IsLeapYear(y)][m]){d-=runPing[IsLeapYear(y)][m],m++;if(m>12)m=1,y++;}
|
||
}
|
||
|
||
/*copy区:Unicode转码技术*/string urlDecode(const string& src) {string ret;for (size_t i = 0; i < src.length(); ++i) {if (src[i] == '%') {/*处理百分号编码*/if (i + 2 < src.length()) {std::string hex = src.substr(i + 1, 2);char decodedChar = static_cast<char>(std::stoi(hex, nullptr, 16));/*将十六进制字符串转换为字符*/ret += decodedChar;i += 2; /*跳过已处理的部分*/}} else if (src[i] == '+') ret += ' ';/*'+' 号转换为一个空格*/else ret += src[i]; /*直接添加其他字符*/}return ret;}
|
||
|
||
void PYear(int n){
|
||
encodedStr+="|By:Ricsae";
|
||
string decodedStr = urlDecode(encodedStr);
|
||
int day[12][6][7]={{{{0}}}};
|
||
for(int k=0;k<12;++k){
|
||
int FD=WeekDay(y,k+1,1);
|
||
int daynum=1;
|
||
for(int i=0;i<6;++i){
|
||
for(int j=((daynum==1)?FD%7:0);j<7;++j){
|
||
if(y==1582&&k==9&&daynum==5)daynum+=10;
|
||
if(daynum>runPing[IsLeapYear(y)][k+1])break;
|
||
day[k][i][j]=daynum++;
|
||
}
|
||
}
|
||
}
|
||
string str1="";for(int i=0;i<26*n+5;i++)str1+="=";str1+="|";int tempa=ToStringB(y).length();str1.replace(tempa+2, 1, "|");str1.replace(0, 2, "||");str1.replace(2, tempa, ToStringB(y));cout<<str1<<endl;
|
||
for(int k=0;k<12;k+=n){
|
||
cout<<":";
|
||
for(int x=0;x<n;++x){
|
||
cout<<" "<<ToString(k+1+x);cout<<" ";for(string j:wk_en)cout<<" "<<j;
|
||
}
|
||
cout<<" :\n";
|
||
for(int i=0;i<6;++i){
|
||
cout<<":";
|
||
for(int x=0;x<n;++x){cout<<" ";for(int j=0;j<7;++j)if(day[k+x][i][j])cout<<ToString(day[k+x][i][j]);else cout<<" ";}
|
||
cout<<" :\n";
|
||
}
|
||
}
|
||
string str2="|";for(int i=0;i<26*n+3-14;i++)str2+="=";str2.replace(26*n-11,1,decodedStr);str2+="|";cout<<str2<<endl;
|
||
}
|
||
|
||
signed main(){
|
||
初始化
|
||
string choice,temp;int value,op;
|
||
while(true){
|
||
print("请选择操作:\n1.查周几\n2.查闰年\n3.查日历\n4.彩蛋\n5.退出\n输入选项:\n");
|
||
printf_purple("日期结构:YYYYMMDD(请一次全输入 如20240405<有点反人类)\n示例1: 20190220为2月20日 示例2: 20160301为3月1日\n");
|
||
getline(cin, choice);
|
||
// if (cin.fail() || choice < 1 || choice > 3) { clearInput(); continue;}// 应对非法输入的法二,弊端:过于麻烦,但可辅助输入
|
||
if(choice=="1"){
|
||
while(true) {
|
||
print("查周几 示例: 20190220为2月20日\n请输入日期:(如果我沉默了一定是你不对!!!)\n");
|
||
getline(cin,temp);value=to_int(temp);
|
||
if(value<10000||cin.fail()){clearInput();continue;}
|
||
getdata(value);
|
||
if(d==0) continue;
|
||
if(!IsTureData()){printf_blue("很屑的了,搞点正常的不行吗?\n");ToTrueDate();cout<<"\033[0;34m猜你想知道"<<y<<"年"<<m<<"月"<<d<<"日是星期几?\033[0m"<<endl;}
|
||
int n=WeekDay(y,m,d);
|
||
if(n==-1){printf_blue("不是哥们,日历上没这天,那天不是被搞没了。\n");}else{cout<<y<<"."<<m<<"."<<d<<"是星期"<<wk_zh[n]<<"["<<wk_en[n]<<"]\n";}
|
||
Fexit
|
||
}
|
||
}else if(choice=="2"){
|
||
while(true) {
|
||
print("查闰年 请输入年份:");
|
||
// cin>>value;cin.ignore(1e9,'\n');//方案1
|
||
getline(cin,temp);value=to_int(temp);
|
||
if(value<1||cin.fail()){clearInput();continue;}
|
||
if(IsLeapYear(value))cout<<value<<"是闰年!"<<endl;else cout<<value<<"非闰年!"<<endl;
|
||
if(value>9999)printf("\033[0m\033[24;34m%s\033[0m", "这个年号害我笑一下\n");
|
||
Fexit
|
||
}
|
||
}else if(choice=="3"){
|
||
while(true) {
|
||
while(true){
|
||
print("查日历 请输入年份:\n");
|
||
getline(cin,temp);y=to_int(temp);
|
||
if(y<1||cin.fail()){clearInput();continue;}
|
||
break;
|
||
}
|
||
while(true){
|
||
print("查日历 输出多少列:\n");int n=13;
|
||
getline(cin,temp);n=to_int(temp);
|
||
if(cin.fail()){clearInput();continue;}
|
||
if(0<n&&n<13){
|
||
PYear(n);
|
||
Fexit
|
||
}else printf_red("非法输入,请重新输入!\n");
|
||
}
|
||
break;
|
||
}
|
||
}else if(choice=="4"){
|
||
//后记:网络爬虫方案失败
|
||
system("cls");
|
||
if(cishu++)cout<<"这是你第"<<cishu<<"来这里了"<<endl<<"但菜单页为何不可以彩蛋呢?"<<endl;
|
||
print_cd(1000,"Hi,这暗藏着彩蛋的部分信息\n");
|
||
print_cd(1000,"3的bug最好找\n");
|
||
print_cd(1000,"当输入不可被整除的数字时,输出会炸,甚至可能会把你卡出去\n");
|
||
print_cd(1500,"除此外,其实还有个非常远古的游戏传统彩蛋:\n");
|
||
print_cd(1500,"哦对了,其实有时候会触发渲染颜色问题\n");
|
||
if(cishu>1)print_cd(1000,"提示1:\n数字+字母\n");
|
||
if(cishu>2)print_cd(1000,"提示2:\n数字是由其他方式代替来的\n");
|
||
if(cishu>3)print_cd(1000,"真的没新提示了\n");
|
||
if(cishu>4)print_cd(1000,"再有新提示的话会④人的\n");
|
||
system("pause");
|
||
system("cls");
|
||
// 后后记:突然就明白了,什么叫防御式代码
|
||
}else if(choice=="5"){
|
||
break; }else if(choice==_str[0]||choice==_str[1]){cout<<urlDecode(decodedStr)<<endl;WTF cout<<endl<<endl<<endl<<endl;
|
||
}else{
|
||
printf_red("非法输入,请重新输入!\n");
|
||
}
|
||
}
|
||
}
|
||
//Clion yyds
|