栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

PTA解封日期C语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PTA解封日期C语言

问题描述

小明所在的城市发生了疫情,实行静态化管理,小明也被关在家里,不能去上学了。

根据当地政策,连续N天没有新增病例,就可以解封。小明知道过去M(M≤N)天的每天的新增病例数,他想知道理想情况下最早什么时候可以解封。

输入格式:

第一行一个日期,格式为YYYY/MM/DD。

第二行两个整数N和M,0

之后M行,每行一个整数0≤Xi​≤100,0≤i

输出格式:

一行,一个日期,格式为YYYY/MM/DD,请不要有多余的空格。

#include
//判断是否是闰年; 
bool runnian(int year){
	if(year%4==0&&year%100!=0||year%400==0){
		return 1;
	}
	return 0;	
}

//判断这个月的类型;
int judgeMonth(int month,int year){
	if(month==1||month==3||month==5||month==7||month==8||month==10){
		return 1;
	}//表示大月; 
	else if(month==4||month==6||month==8||month==10||month==12){
		return 0;
	}//表示小月; 
	else if(month==2&&runnian(year)){
		return 2;
	}//表示有29天的二月;
	else if(month==2&&!runnian(year)){
		return 3;
	}//表示有28天的二月; 
}

//打印日期; 
void printDate(int year,int month,int day,int kuashi){
	
	int flag=judgeMonth(month,year);
 			
	while(flag==1&&kuashi+day>31||flag==0&&kuashi+day>30||flag==2&&kuashi+day>29||flag==3&&kuashi+day>28){
		//将跨时减去本月的剩余时间 
			switch(flag){
				case 0:kuashi=kuashi-(30-day);break;
				case 1:kuashi=kuashi-(31-day);break;
				case 2:kuashi=kuashi-(29-day);break;
				case 3:kuashi=kuashi-(28-day);break;
			}
				
			day=0;
				
		//判断下一个月是几月; 
			if(month<12){
				month++;
			}
			else{
				month=1;
				year++; 
			}
		//判断下一个月的类型 
			flag=judgeMonth(month,year);
	}
	
	printf("%04d/%02d/%02d",year,month,day+kuashi);	
}

int main(){
	int year,month,day;
	int N,M;
	int bingli;
	//从今天至以往K天都没有病例;
	int k=0;
	 
	scanf("%d/%d/%d",&year,&month,&day);
	scanf("%d %d",&N,&M);
	
	int flag=1;
	for(int i =0;i < M;i ++){
		scanf("%d",&bingli);

		if(bingli==0&&flag==1){
			k++;
		}
		else{
			flag=0;
		}
	}
	int kuashi=k+N;
	
	printDate(year,month,day,kuashi);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号