C语言输入日期向后一天预测

#include<stdio.h>
//1日期开始时间为1920.01.01;结束为2050.12.31,首先对日期的合理性进行判断
//2.由于可被四整除且不能被一百整除年份为润年,年份不同时,二月的数据有所改变(29或28),故第二对年份进行平润年判断
//3.对月份进行大月小月判断:1,3,5,7,8,10,12为大月(31天);2,4,6,9,11为小月(除二月外,其余小月为30天)
//进行数据运算,将输入日期向前位移一天,再判断得到的数据是否符合开局规定的极限值,是则输出,不是输出相关提示。
void pingrunpanduan(a, b, c);//判断日期的合理性
void pingtuiyihefa(d,e,f);//平年的推移
void runtuiyihefa(d, e, f);//润年的推移
void shuchu();//最后输出结果
int main()
{
int year;
int month;
int day;
printf(“请输入年月日,格式为年-月-日: “);
scanf(”%d-%d-%d”,&year,&month,&day);
pingrunpanduan(&year,&month,&day);
printf("------%d-%d-%d------\n", year, month, day);
}
void pingrunpanduan(int *a,int *b,int *c)
{
//
if ((*a >= 1920) && (*a <= 2051) && (*b <= 12) && (*b >= 1) && (*c >= 1) && (*c <= 31))
{
if (*a%4==0 && *a%100!= 0)
{//润年
runtuiyihefa(a, b, c);
}
else
{
pingtuiyihefa(a, b, c);
}
}
}
void pingtuiyihefa(int *d,int *e,int *f)
{
printf("------输入为平年,结果为------\n");
switch (*e)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:if (*f <=30){ *f += 1; break; };
if (*f == 31 && *e <= 11){ *e += 1; *f = 1; break; };
if (*d != 2050 && *e == 12 && *f == 31){ *d += 1; *f = *e = 1; printf(“明天为闰年日期:”); break; }
else if (d == 2050 && f == 31 && *e == 12) { printf("%d-%d-%d已经是设置的极限日期,无法向后推移", *d, *e, *f); }break;
case 4:
case 6:
case 9:
case 11:if (*f < 30){ *f += 1; break; };
if (*f == 30 && *e <= 11){ *e += 1; *f = 1; break; }; break;
case 2:if (*f <28){ *f += 1; }
if (*f == 28){ *e += 1; *f = 1; }; break;
default:
printf(“平年输入有误\n”);
break;
}
}
void runtuiyihefa(int *d, int *e, int *f)
{
printf("------输入为润年,结果为:------\n");
switch (*e)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:if (*f <= 30){ *f += 1; break; };
if (*f == 31 && *e <= 11){ *e += 1; *f = 1; break; };
if (*d != 2050 && *e == 12 && *f == 31){ *d += 1; *f = *e = 1; printf(“明天为平年日期:”); break; }
case 4:
case 6:
case 9:
case 11:if (*f < 30){ *f += 1; break; };
if (*f == 30 && *e <= 11){ *e += 1; *f = 1; break; }; break;
case 2:if (*f <=28){ *f += 1; }
if (*f == 29){ *e += 1; *f = 1; }; break;
default:
printf(“润年输入有误\n”);
break;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值