c++ 根据生产日期,保质期求出过期时间

第4关:计算日期

挑战任务

我们吃的食物都有保质期,现在食品监督管理局想要制作一个能准确计算食品过期日期的小程序,需要请你来进行设计。

例如:A食品在2018年1月1日生产,保质期是20天,则它的过期日期在2018年1月21日。

编程要求

补全函数string getDate(string releaseDate,int day)其中releaseDate表示食品出厂日期day表示保质期,请根据传入的数据计算食品的过期日期,格式为yyyy-mm-dd4位年份2位月份2位日期。比如:2015-02-19

请严格按照格式书写,不能出现其它文字或符号,并将最终结果做为函数的返回值返回。

测试说明

样例1:

输入:
2016-01-0120

输出:

2016-01-21


#include<iostream>
#include<string.h>
#include<cstdio>
using namespace std;

string getDate(string releaseDate,int day){
	int i=0;
	int y=0,m=0,d=0;
	while(releaseDate[i]!='-'){
		y=y*10+releaseDate[i]-'0';         //年y
		i++;
	}
	i++;
	while(releaseDate[i]!='-'){
		m=m*10+releaseDate[i]-'0';         //月m
		i++;
	}
	i++;
	while(i<releaseDate.length()){
		d=d*10+releaseDate[i]-'0';         //日d
		i++;
	}
	int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	d+=day;
	if(m==2)                               //考虑润年的二月
		mon[2]=28+(y%4==0&&y%100!=0||y%400==0);
	while(d>mon[m]){
		d-=mon[m];
		m=(m==12)?1:m+1;
		if(m==1) 
			y++;
		else if(m==2)
			mon[2]=28+(y%4==0&&y%100!=0||y%400==0);
	}
	char yy[11],mm[3],dd[3];
	sprintf(yy,"%d",y);                   //将整型数转换成字符数组
	sprintf(mm,"%d",m);
	sprintf(dd,"%d",d);
	strcat(yy,"-");                       //以特定的格式将代表年月日的字符串连接
	strcat(yy,mm);
	strcat(yy,"-");
	strcat(yy,dd);
	return yy;
}

int main(){
	string s=getDate("2016-02-22",30);
	for(int i=0;i<s.length();i++)
		cout<<s[i];
	cout<<endl;
	return 0;
}

体会:学会如何去计算日期。

 

posted @ 2018-11-01 11:07  Frank__Chen  阅读(511)  评论(0编辑  收藏  举报