用C语言实现: 输入日期然后计算两天后的日期

题目要求: 输入日期 然后计算两天后的日期

#include<stdio.h>
int main(){
    while(true){
        int a[3];
        int i;
        printf("============================\n");
        printf("请输入月 日 年的数字\n");
        printf("例如这样的格式\n11 3 2017\n");
        printf("\n");
        for(i=0;i<3;i++){
            scanf("%d",&a[i]);
        }
        //对月份进行初步判断 
        if(a[0]<0||a[0]>12){
            printf("月份格式不正确\n");
            continue ; 

        }
        //对日份进行初步判断 
        if(a[1]<1&&a[1>31]){
            printf("日份格式不正确\n");
            continue ; 

        }
        //对大月进行判断 
        if(a[0]==1||a[0]==3||a[0]==5||a[0]==7||a[0]==8||a[0]==10){
            if(a[1]==31){
                a[1]=2;
                a[0]++;
            }else if(a[1]==30){
                a[1]=1;
                a[0]++;
            }else{
                a[1]=a[1]+2;
            }
        }
        //对小月进行判断 
        else if(a[0]==4||a[0]==6||a[0]==9||a[0]==11){

            if(a[1]==31) {
                printf("日份格式不正确\n");
                continue ; 

            }else if(a[1]==30){
                a[1]=2;
                a[0]++;
            }else if(a[1]==29){
                a[1]=1;
                a[0]++;
            }else{
                a[1]=a[1]+2;
            }
        }
        else if(a[0]==2){
            //对2月进行判读 
            if((a[2]/4==0&&a[2]/100!=0)||(a[2]/400==0)){
                    if(a[1]==29){
                        a[1]=2;
                        a[0]++;
                    }else if(a[1]==28){
                        a[1]=1;
                        a[0]++;
                    }else{
                        a[1]=a[1]+2;
                    }
                }else{
                    if(a[1]>=29){
                        printf("不是瑞年 日期 输入有误\n");
                        continue ;
                    }
                    else if(a[1]==28){
                        a[1]=1;
                        a[0]++;
                    }else{
                        a[1]=a[1]+2;
                    }

                }
        }else{
            //对12月份单独判断 如果超过界限年份加1 
            if(a[1]==31){
                a[1]=2;
                a[0]=1;
                a[2]++;
            }else if(a[1]==30){
                a[1]=1;
                a[0]=1;
                a[2]++;
            }else{
                a[1]=a[1]+2;
            }
        }
        printf("\n");
        printf("两天后的日期是\n");
        printf("\n");
        printf("%d/%d/%d\n",a[0],a[1],a[2]);
        printf("\n");


    }

}

输出格式如下

============================
请输入月 日 年的数字
例如这样的格式
11 3 2017

11 31 2017
日份格式不正确
============================
请输入月 日 年的数字
例如这样的格式
11 3 2017

11 30 2017

两天后的日期是

12/2/2017

============================
请输入月 日 年的数字
例如这样的格式
11 3 2017


这个主要一个是对瑞年的判断 和 大月小月的 月末的判断(月份加一)

以及和对12月的月末进行判断(年份会加一 月份归一)

posted @ 2017-11-03 19:04  孙中明  阅读(455)  评论(0编辑  收藏  举报