Discuz! Board

 找回密码
 立即注册
查看: 307|回复: 0

3.5 日期模拟

[复制链接]

54

主题

66

帖子

574

积分

高级会员

Rank: 4

积分
574
发表于 2023-3-5 17:04:27 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include <bits/stdc++.h>
using namespace std;
int i[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 a;
int rn(int t)
{
    int t1;
    if (t % 4 == 0)
    {
        if (t % 100 == 0)
        {
            if (t % 400 == 0)
                t1=1;
            else
                t1=0;
        }
        else
            t1=1;
    }
    else
        t1=0;
    return t1;
}
int rqjs(int y,int m,int d)
{
	int s=0;
	for(int j=0;j<m;j++)
	{
		s=s+i[rn(y)][j];
	}
	s=s+d;
	return s;
}
int week(int n)
{
	int s=4;
	s=(s+n)%7;
	if(s==0) s=7;
	return s;
}
int main()
{
	cin>>a;
	printf("%d",week(a));
	return 0;
} 

[C++] 纯文本查看 复制代码
void xingqitongji()//星期统计 
{
	int week[7]={0};
	int y1,m1,d1,n,w;
	int n1=0,y1t;
	int mon[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
              	  	31,29,31,30,31,30,31,31,30,31,30,31};
    cin>>n; 	
	y1=1900;
	m1=1;
	d1=1;
	
	if(runnian(y1))	y1t=1;//如果y1是闰年,则y1t=1  否则等于0 
	else y1t=0;
	
	while(1)
	{
		n1++;
		d1++;//几号 
		if(d1==13)
		{	
			w=(n1%7+1)%7//如果是13号,就将这个星期的个数加一 
			week[w]++; 
		}
		if(d1==mon[y1t][m1-1]+1) 
		{
			m1++;//月份加一 
			d1=1;//号等于1 
			if(m1==13)//如果月份是13 
			{
				y1++;//年份加一 
				m1=1;//月份大于1 
				if(runnian(y1))	y1t=1;//如果y1是闰年,则y1t=1
				else y1t=0;//否则等于0 
			}
		}
		
		if((y1==(1900+n-1))&&(m1==12)&&(d1==31))//如果年份等于1900+n-,且月份等于12,日期等于31 
		{
			break;//跳出循环 
		}	
	} 
	
	cout<<week[6]<<' ';//周六 
	for(int i=0;i<6;i++)
	cout<<week[i]<<' ';
} 

void xingqitongji2()//星期统计 
{
	int week[7]={0};
	int y1,m1,d1,n,w;
	int n1=0,y1t;
	int mon[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
              	  	31,29,31,30,31,30,31,31,30,31,30,31};
    cin>>n; 	
	y1=1900;
	m1=1;
	d1=1;
	
	if(runnian(y1))	y1t=1;
	else y1t=0;
	
	while(1)
	{
		w=((n1+12)%7+1)%7;
		week[w]++; 
		n1+=mon[y1t][m1-1];
		
		if((y1==(1900+n-1))&&(m1==12))
		{
			break;
		}
		
		m1++;
		if(m1==13)
		{
			y1++;
			m1=1;
			if(runnian(y1))	y1t=1;
			else y1t=0;
		}
		
			
	} 
	
	cout<<week[6]<<' ';
	for(int i=0;i<6;i++)
	cout<<week[i]<<' ';
} 

//七分甜的秋刀鱼
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-13 05:26 , Processed in 0.049055 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表