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;
}
体会:学会如何去计算日期。
c++ 根据生产日期,保质期求出过期时间的更多相关文章
- debug查找主板生产日期
		
实验环境:XP(XP以上系统没有自带debug) 查询主板生产日期,发现时间为07/02/15 -e命令进行修改日期,尝试将07年改为08年 在查询一下修改完成后的日期,发现日期不变 原因:这块内存是 ...
 - hadoop项目之求出每年二月的最高气温(Combiner优化)
		
hadoop项目之求出每年二月的最高气温(Combiner优化) 一.项目结构 一.java实现随机生成日期和气温 package com.shujia.weather; import java.io ...
 - 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结
		
防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...
 - Java程序设计求出岁数
		
题目:我年龄的立方是个4位数.我年龄的4次方是个6位数.这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次,求出我今年几岁. 直接拷贝运行就可以了. public class Age { ...
 - 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. ...
 - AX2009按照批次生产日期预留
		
AX2009如果想按照批处理号预留,它默认是按照InventBatchId排序的,但并不是InventBatchd小的批次的生产日期就早,所以这个逻辑得改一下,让它按照InventBatch的Prod ...
 - JAVA输入一个整数,求出其所有质因数
		
首先得求出能整除A的数,再判断I是否是质数!!! import java.util.*; public class aa { public static void main(String[] args ...
 - 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
		
主要掌握String中的方法 char[] toCharArray() 将此字符串转换为一个新的字符数组. int indexOf(String str) 返回 ...
 - NSDateFormatter 根据时间戳求出时间
		
NSDateFormatter 根据时间戳求出时间 - (void)detailWithStyle:(NSString*)style time:(NSInteger)time { // NSStrin ...
 
随机推荐
- Mybatis学习(4)输入映射、输出映射、动态sql
			
一.输入映射: 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型 1) 传递pojo的包装对象 需求是:完成用户信息的综合查询,传入的查询条件复 ...
 - Bezier画线算法
			
编译器:VS2013 描述:Bezier画线是利用导数相同拼接曲线,使曲线十分光滑,而不是随意拼接观赏性很差 主函数段 #include "stdafx.h" #include&l ...
 - [原]DataGridView 回车不换行代码 AND 编辑时的字符控制
			
// 让 dataGridView1 在遇到回车时不响应 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { ...
 - 服务端tomcat的简单监控
			
由于线上对tomcat监控处于失控的状态(只能通过跳转,简单地jstack/jstat进行监控),故需要针对tomcat快速查看其运行状态 Tomcat-manager 在tomcat/web ...
 - eclipse离线安装Activiti Designer插件
			
提供下载的链接:https://download.csdn.net/download/qq_41436774/10437391 1.打开Eclipse,点击Help ---> Install n ...
 - 【Python编程:从入门到实践】chapter2 变量和简单数据类型
			
2.1 运行2.2 变量 message = "hello" print(message) 2.2.1 变量的命名和使用 2.2.2 使用变量是避免命名错误2.3 字符串 “Hel ...
 - php 编程笔记分享 - 非常实用
			
php opendir()列出目录下所有文件的两个实例 php opendir()函数讲解及遍历目录实例 php move_uploaded_file()上传文件实例及遇到问题的解决方法 php使用m ...
 - 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #18 向ext4转换
			
HACK #18 向ext4转换 ext4可以与ext2/ext3在后台进行互换.这里将介绍从ext2/ext3转换的方法以及转换时的注意事项.转换有两种方法可以将ext2/ext3的磁盘映像作为ex ...
 - AVL树Python实现
			
# coding=utf-8 # AVL树Python实现 def get_height(node): return node.height if node else -1 def tree_mini ...
 - position属性详解
			
内容: 1.position属性介绍 2.position属性分类 3.relative相对定位 4.absolute绝对定位 5.relative和absolute联合使用进行定位 6.fixed固 ...