c++计算路过人间的天数

这个是从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; //最后一个字符小爱心
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值