输入一个日期,输出它的前一天

提示输入格式,输入一个日期,并返回前一天,且当输入错误时提示错误内容,并递归。 

#include <stdio.h>
#include<iostream>
using namespace std;//当输入年份不在1900和2080之间报错,当输入月份不在1-12报错,当输入日期不在1-31报错,当输入为小月时日期大于30报错,当输入为2月闰年时,日期大于29报错,当为平年时日期大于28报错 (输入规范) 
int main()
{
	void yesterDay(int y,int m,int d);
	int year,month,day;
	printf("请输入(1900~2080年1~12月1~31日)(格式:XXXX XX XX):\n"); 
	cin>>year>>month>>day;
	yesterDay(year,month,day);
	return 0;	
}
void yesterDay(int y,int m,int d)
{
	/*printf("请输入年月日:");
	scanf("%d%d%d",&y,&m,&d);*/
	if(y<1900||y>2080)
		{
		printf("年份输入错误,请重新输入1900至2080之间的年份!\n");
		main();}
	else{
		if(d<=31)
		{
		 switch(m)
  		{
			case 1:
				d>=2?d=d-1:(y=y-1,m=12,d=31);
	     		printf("昨天是%d年%d月%d日",y,m,d);
			case 2:
				if((y%4==0&&y%100!=0)||(y%400==0))
					{
						if(d<=29)
				 			{
								d>=2?d=d-1:(m=m-1,d=31);
		 						printf("今年是闰年,昨天是%d年%d月%d日",y,m,d);
							}
						else{
							printf("日期输入错误,闰年二月至多有29天,请重新输入!\n");
							main();
						}
				 	}
				 else{
				 		if(d<=28)
				 			{
								d>=2?d=d-1:(m=m-1,d=31);
		 						printf("今年是平年,昨天是%d年%d月%d日",y,m,d);
							}
						else{
							printf("日期输入错误,平年二月至多有28天,请重新输入!\n");
							main();
						}
				 	
				 }
				 break;
			case 3:
		 		if((y%4==0&&y%100!=0)||(y%400==0))
		 		 {
		  			d==1?(d=29,m=2):d=d-1;
		  			printf("今年是闰年,昨天是%d年%d月%d日",y,m,d);
			 	 }
		 	 else
		  		{
		  			d==1?(d=28,m=2):d=d-1;
		  			printf("今年是平年,昨天是%d年%d月%d日",y,m,d);
		 		 }
			 break;
			case 8:
				 d>=2?d=d-1:(m=m-1,d=30);
		 		printf("昨天是%d年%d月%d日",y,m,d);
				 break;
       	 	case 4:
			case 6:
			case 9:
			case 11:
				if(d<=30)
				 {
				 	d>=2?d=d-1:(m=m-1,d=31);
		 			printf("昨天是%d年%d月%d日",y,m,d);
		 		}
		 		else{
		 			printf("日期输入错误,11月是小月最多只有30天,请重新输入!\n");
		 			main();
				 }
				 break;
		 	break;
			case 5:
        	case 7:
			case 10:
			case 12:
				 d>=2?d=d-1:(m=m-1,d=30);
		 		printf("昨天是%d年%d月%d日",y,m,d);
			 break;
		 	default : printf("月份输入错误,月份应在1到12之间,请重新输入!\n");
		 				main();
		 		
	  }
     }
    else if(d>31)
     {
     printf("输入错误,日期应小于31,请重新输入!\n");
	 main();	
	 }
     }
}

    PriorDate(年份,月份,日期)是三个变量的函数。函数返回输入日期的前一个日期。变量年份、月份、日期都是整数值,且满足下面的条件:1900≤年≤2080 ,1≤月≤12, 1≤日≤31。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值