这个是从edge提供的界面想起来的。感觉我们也可以写一个。
于是就动手写起来了。
难点有一个就是获取当前的日期。
其他的就是简单的计算了。
分为三部分:
1、出生的闰年判断和当年的闰年判断;
2、出生的那一年到年底有多少天,今年进行了多少天。
3、计算中间的这些年经过了多少天。
------------
更新了一些花里胡哨的东西。
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
const int Y = 2024;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool rn(int n){return (n%4==0&&n%100!=0||n%400==0);
}
void xx();
int main(){auto now = chrono::system_clock::to_time_t(chrono::system_clock::now());// 转换为本地时间结构tm* now_tm = localtime(&now);// 提取年月日int Y = now_tm->tm_year + 1900;int M = now_tm->tm_mon + 1;int D = now_tm->tm_mday;int y,m,d,sum=0;char c;cin>>y>>c>>m>>c>>d;month[2]+=rn(y);sum=month[m]-d;for(int i=m+1;i<=12;i++){sum+=month[i];} for(int i=y+1;i<=Y-1;i++) {sum+=365+rn(i);}a[2]+=rn(Y);for(int i=1;i<=M-1;i++) {sum+=a[i];}cout<<"\t\t\t路过人间的第"<<sum+D<<"天,愿你一切顺利";xx(); return 0;
}
void xx() {system("color cF");int i, j, k, l, m;char c = '*'; //ASCII码里面 3 就是一个字符小爱心cout<<endl; //空一行for (i=1; i<=3; i++) {//前3行中间有空隙分开来写for (j=1; j<=32-2*i; j++)cout<<" "; //左边的空格,每下一行左边的空格比上一行少2个 //8*n-2*ifor (k=1; k<=4*i+1; k++)cout<<c;//输出左半部分字符小爱心for (l=1; l<=13-4*i; l++)cout<<" "; //中间的空格,每下一行的空格比上一行少4个for (m=1; m<=4*i+1; m++)cout<<c;//输出右半部分字符小爱心cout<<endl; //每一行输出完毕换行Sleep(500);}for (i=1; i<=3; i++) {//下3行中间没有空格for (j=1; j<=24+1; j++)cout<<" "; //左边的空格 //8*(n-1)+1for (k=1; k<=29; k++)cout<<c;//输出字符小爱心cout<<endl; //每一行输出完毕换行Sleep(500);}for (i=7; i>=1; i--) {//下7行for (j=1; j<=40-2*i; j++)cout<<" "; //左边的空格,每下一行左边的空格比上一行少2个//8*(n+1)-2*ifor (k=1; k<=4*i-1; k++)cout<<c;//每下一行的字符小爱心比上一行少4个(这个循环是i--)cout<<endl; //每一行输出完毕换行Sleep(500);}for (i=1; i<=39; i++)cout<<" "; //最后一行左边的空格cout<<c<<endl; //最后一个字符小爱心
}