第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;
}

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

c++ 根据生产日期,保质期求出过期时间的更多相关文章

  1. debug查找主板生产日期

    实验环境:XP(XP以上系统没有自带debug) 查询主板生产日期,发现时间为07/02/15 -e命令进行修改日期,尝试将07年改为08年 在查询一下修改完成后的日期,发现日期不变 原因:这块内存是 ...

  2. hadoop项目之求出每年二月的最高气温(Combiner优化)

    hadoop项目之求出每年二月的最高气温(Combiner优化) 一.项目结构 一.java实现随机生成日期和气温 package com.shujia.weather; import java.io ...

  3. 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结

    防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...

  4. Java程序设计求出岁数

    题目:我年龄的立方是个4位数.我年龄的4次方是个6位数.这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次,求出我今年几岁. 直接拷贝运行就可以了. public class Age { ...

  5. projecteuler 10001st prime (求出第10001个质数)

    By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. ...

  6. AX2009按照批次生产日期预留

    AX2009如果想按照批处理号预留,它默认是按照InventBatchId排序的,但并不是InventBatchd小的批次的生产日期就早,所以这个逻辑得改一下,让它按照InventBatch的Prod ...

  7. JAVA输入一个整数,求出其所有质因数

    首先得求出能整除A的数,再判断I是否是质数!!! import java.util.*; public class aa { public static void main(String[] args ...

  8. 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。

    主要掌握String中的方法 char[] toCharArray()           将此字符串转换为一个新的字符数组. int indexOf(String str)           返回 ...

  9. NSDateFormatter 根据时间戳求出时间

    NSDateFormatter 根据时间戳求出时间 - (void)detailWithStyle:(NSString*)style time:(NSInteger)time { // NSStrin ...

随机推荐

  1. Java-Runoob-高级教程-实例-数组:04. Java 实例 – 数组反转

    ylbtech-Java-Runoob-高级教程-实例-数组:04. Java 实例 – 数组反转 1.返回顶部 1. Java 实例 - 数组反转  Java 实例 以下实例中我们使用 Collec ...

  2. vlc 网页插件的 使用与控制 API http://www.xuebuyuan.com/2224602.html

    不知道vlc 是什么的请百度一下.. vlc 提供了ie浏览器的activeX插件和火狐或者chrome的插件,基本上覆盖了所有浏览器,所以有复杂解码需求的情况下用vlc来解决网页播放视频,也是一种没 ...

  3. VS2013下.Net Framework4配置FineUI4.14

    配置步骤: 工具箱:空白处右键--选项卡--浏览,选择FineUI.dll配置web.config,管道模式设置为:传统 配置web.config 在form表单下添加: <f:PageMana ...

  4. 报表系统OLAP

    实现报表系统可自定义定制: 1.纬度,事实表,用户自定义观察纬度,实现报表自定义(自定义纬度树结构---通过这个树结构,后台自动生成报表SQL,用户仅仅配置纬度关系即可)----报表配置纬度关 系 2 ...

  5. js中, match和exec方法的区别

    1. 来源分别为: string.match(reg) 和 RegExp.exec(str): 2. 区别 >  现有 字符串s1 和 正则对象 r1.     目标: 抽出s1中的所有电话号码 ...

  6. WARN hdfs.DFSClient: Caught exception java.lang.InterruptedException

    Hadoop 2.7.4 The reason is this: originally, DataStreamer::closeResponder always prints a warning ab ...

  7. nagios - 环境搭建

    ㈠ 公共服务监控 ㈡ 实现资源监控 ㈢ 图形化MRTG =============================== nagios-安装 安装前准备 创建用户和用户组 # groupadd -r n ...

  8. 重识linux-RPM命令

    最近开始系统的学习linux,买了本 鸟哥的私房菜,当工具书  系统的看看 学习 多练习 才是王道 RPM是个很强大的命令 全称是 Redhat Package Management   红帽包管理工 ...

  9. SparkSession

    在2.0版本之前,使用Spark必须先创建SparkConf和SparkContext catalog:目录 Spark2.0中引入了SparkSession的概念,SparkConf.SparkCo ...

  10. C# ADO.NET 封装的增删改查

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...