C语言实现输入一个日期,返回第二天的日期

来源:大工慕课 链接
作者:Caleb Sung

解答示范

其实也可以用函数部分的知识解决,而且也不推荐大家使用goto命令;
本文主要面向C语言初学者,故使用函数之前的知识加以解决:

#include<stdio.h>
int main()
{
    int y, m, d;
    L:
    printf("请输入一个日期,年月日均为整数,并用空格键隔开。其中,年份为负表示公元前纪年。\n");
    scanf("%d %d %d",&y,&m,&d);
    switch(m)
    {
        case 1:
            {
                if (d==31)
                    {m++; d=1;}
                else if (d>=1&&d<=30)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }
        case 2:
            {
                if (d==29)
                {
                    if (y%4==0&&y%100!=0||y%400==0)
                    {m++; d=1;}
                    else
                        {printf("错误的日期,请检查后再次输入!\n"); 
                        goto L;}
                }
                else if (d>=1&&d<=28)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
                break;
            }
        case 3:
            {
                if (d==31)
                    {m++; d=1;}
                else if (d>=1&&d<=30)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }
        case 4:
            {
                if (d==30)
                    {m++; d=1;}
                else if (d>=1&&d<=29)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }
        case 5:
            {
                if (d==31)
                    {m++; d=1;}
                else if (d>=1&&d<=30)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }
        case 6:
            {
                if (d==30)
                    {m++; d=1;}
                else if (d>=1&&d<=29)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }   
        case 7:
            {
                if (d==31)
                    {m++; d=1;}
                else if (d>=1&&d<=30)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }
        case 8:
            {
                if (d==31)
                    {m++; d=1;}
                else if (d>=1&&d<=30)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }   
        case 9:
            {
                if (d==30)
                    {m++; d=1;}
                else if (d>=1&&d<=29)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }
        case 10:
            {
                if (d==31)
                    {m++; d=1;}
                else if (d>=1&&d<=30)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }   
        case 11:
            {
                if (d==30)
                    {m++; d=1;}
                else if (d>=1&&d<=29)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }
        case 12:
            {
                if (d==31)
                    {y++; m=1; d=1;}
                else if (d>=1&&d<=30)
                    d++;
                else
                    {printf("错误的日期,请检查后再次输入!\n"); 
                    goto L;}
            break;
            }
        default: 
            {printf("错误的日期,请检查后再次输入!\n"); 
            goto L;}            
    }
    if (y<=-1)
        {printf("第二天为公元前%d年%d月%d日。\n",-y,m,d);}
    else if (y==0)
        {printf("第二天为公元元年%d月%d日。\n",m,d);}
    else
        {printf("第二天为公元%d年%d月%d日。\n",y,m,d);}
    return 0;
}
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值