c++ 根据生产日期,保质期求出过期时间
第4关:计算日期
我们吃的食物都有保质期,现在食品监督管理局想要制作一个能准确计算食品过期日期的小程序,需要请你来进行设计。
例如:A食品在2018年1月1日生产,保质期是20
天,则它的过期日期在2018年1月21日。
补全函数string getDate(string releaseDate,int day)
其中releaseDate
表示食品出厂日期day
表示保质期,请根据传入的数据计算食品的过期日期,格式为yyyy-mm-dd
即4
位年份2
位月份2
位日期。比如:2015-02-19
请严格按照格式书写,不能出现其它文字或符号,并将最终结果做为函数的返回值返回。
样例1:
输入:2016-01-01
,20
输出:
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;
}
体会:学会如何去计算日期。
朋友们,无论这个世界变得怎样,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。