这个是从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);
if(Y<y){
cout<<"还未出生";
return 0;
}
if(Y!=y){
sum=month[m]-d;
for(int i=m+1;i<=12;i++){
sum+=month[i];
}
a[2]+=rn(Y);
for(int i=1;i<=M-1;i++) {
sum+=a[i];
}
for(int i=y+1;i<=Y-1;i++) {
sum+=365+rn(i);
}
sum+=D;
}
else{
a[2]+=rn(Y);
for(int i=m;i<=M-1;i++) {
sum+=a[i];
cout<<sum<<endl;
}
sum+=D-d;
}
cout<<"\t\t\t路过人间的第"<<sum<<"天,愿你一切顺利";
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*i
for (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)+1
for (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*i
for (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; //最后一个字符小爱心
}