| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3890 人关注过本帖
标题:输入今天的日期,求明天的日期,出错了,不知怎么回事
只看楼主 加入收藏
lrcdddd
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2014-7-3
结帖率:11.11%
收藏
 问题点数:0 回复次数:15 
输入今天的日期,求明天的日期,出错了,不知怎么回事
struct date
{
    int year;
    int month;
    int day;
};
void main()
{
    void cf(struct date *p);
    struct date s1,*p;
    printf("请输入今天的日期:  ");
    scanf("%d %d %d",&s1.year,&s1.month,&s1.day);
    p=&s1;
    cf(p);
}
void  cf(struct date *p)
{   
    struct date s2;
    if(p->day<28)
        s2.year=p->year;
        s2.month=p->month;
        s2.day=p->day+1;
    else if(p->day==28)
         if(p->year%4==0&&p->year%100!=0||p->year%400==0)
           s2.year=p->year;
           s2.month=p->month;
           s2.day=p->day+1;
         else
             s2.year=p->year;
             if(p->month==2)
               s2.month=3;
               s2.day=1;
             else
               s2.month=p->month;
               s2.day=p->day+1;
     else if(p->day==29)
         if(p->year%4==0&&p->year%100!=0||p->year%400==0)
             if(p->month==2)
               s2.month=3;
               s2.day=1;
             else
               s2.year=p->year;
               s2.month=p->month;
               s2.day=p->day+1;
    else if(p->day==30)
        if(p->month==1||3||5||7||8||10||12)
           s2.year=p->year;
           s2.month=p->month;
           s2.day=p->day+1;
        else
           s2.year=p->year;
           s2.month=p->month+1;
           s2.day=1;
    else
        if(p->month==12)
            s2.year=p->year+1;
        else
           s2.year=p->year;
           s2.month=p->month+1;
           s2.day=1;
    printf("输出新的日期:%d %d %d\n",s2.year,s2.month,s2.day);
}







            


 

2014-07-24 23:10
a646404908
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:189
专家分:492
注 册:2012-2-14
收藏
得分:0 
寫得太亂了。。
2014-07-24 23:37
lrcdddd
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2014-7-3
收藏
得分:0 
是啊,不知怎么简化
2014-07-25 06:06
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
应该先判断月份会简单一些,除了2月,其他月份是跟闰年无关的

是2月,再判断是不是闰年
2014-07-25 09:37
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
#include<stdio.h>
//#include<stdlib.h>
struct date
{
    int year;
    int month;
    int day;
};
void main()
{
    void cf(struct date *p);
    struct date s1,*p;
    printf("请输入今天的日期:  ");
    while(scanf("%d %d %d",&s1.year,&s1.month,&s1.day))
        {p=&s1;
        cf(p);
        }
    //system("pause");
}
void  cf(struct date *p)
{   
    struct date s2;
    s2.day=p->day;
    s2.month=p->month;
    s2.year=p->year;
    switch(s2.month)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
                if(s2.day==31)
                    {
                        ++s2.month;
                        s2.day=1;
                    }
                    else
                    {++s2.day;}
                break;
        case 12:
            if(s2.day=31)
                    {
                        ++s2.year;
                        s2.day=1;
                        s2.month=1;
                    }
                    else
                    {++s2.day;}
                break;
        case 4:
        case 6:
        case 9:
        case 11:
            if(s2.day==30)
                    {
                        ++s2.month;
                        s2.day=1;
                    }
                    else
                    {++s2.day;}
                break;
        case 2:
            if(((s2.year)%4==0)&&((s2.year)%100!=0)||((s2.year)%400==0))
                {
                    if(s2.day==29)
                        {
                            ++s2.month;
                            s2.day=1;
                        }
                        else
                        {++s2.day;}
                }
            else
                {
                    if(s2.day==28)
                        {
                            ++s2.month;
                            s2.day=1;
                        }
                        else
                        {++s2.day;}   
                }
                break;
    }
    printf("输出新的日期:%d %d %d\n",s2.year,s2.month,s2.day);

}

//我测试了几个数据,应该没错
//没有添加输入数据是否合理的判断程序 例如2014 4 56,2014 2 29
//判断情况复杂,用switch
2014-07-25 10:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:0 
程序代码:
bool 当前年是闰年吗( 年 )
{
    return 年%400==0 || (年%4==0 && 年%100!=0);
}

int 获得当前月之天数( 年,月 )
{
    static int ms[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    return ms[月-1] + (月==2 && 当前年是闰年吗(年));
}

auto 明天的日期( 年,月,日 )
{
    if( 日 < 获得当前月之天数(年,月) )
    {
        日 = 日+1;
        return;
    }

    年 = 年 + (月==12);
    月 = 月%12 + 1;
    日 = 1;
}



[ 本帖最后由 rjsp 于 2014-7-25 10:42 编辑 ]
2014-07-25 10:41
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
中英文混搭的style的确与众不同,呵呵

梦想拥有一台龙芯3A-4000
2014-07-25 11:14
lrcdddd
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2014-7-3
收藏
得分:0 
printf scanf运行为undeclared identifier,标准库函数,怎么会成为未定义标识符
2014-07-25 12:36
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
无代码无真相

DO IT YOURSELF !
2014-07-25 12:39
lrcdddd
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2014-7-3
收藏
得分:0 
struct date
{
    int year;
    int month;
    int day;
};
void main()
{
    void cf(struct date *p);
    struct date s1,*p;
    printf("请输入今天的日期:  ");
    scanf("%d %d %d",&s1.year,&s1.month,&s1.day);
    p=&s1;
    cf(p);
}
void  cf(struct date *p)
{   
    struct date s2;
    if(p->day<28)
    {
        s2.year=p->year;
        s2.month=p->month;
        s2.day=p->day+1;
    }
    else if(p->day==28)
    {
         if(p->year%4==0&&p->year%100!=0||p->year%400==0)
         {
           s2.year=p->year;
           s2.month=p->month;
           s2.day=p->day+1;
         }
         else
             s2.year=p->year;
             if(p->month==2)
             {
               s2.month=3;
               s2.day=1;
             }
             else
             {
               s2.month=p->month;
               s2.day=p->day+1;
             }
    }
    else if(p->day==29)
         if(p->year%4==0&&p->year%100!=0||p->year%400==0)
             if(p->month==2)
             {
               s2.year=p->year;
               s2.month=3;
               s2.day=1;
             }
             else
             {
               s2.year=p->year;
               s2.month=p->month;
               s2.day=p->day+1;
             }
         else
         {
            s2.year=p->year;
            s2.month=p->month;
            s2.day=p->day+1;
         }
    else if(p->day==30)
        if(p->month==1||3||5||7||8||10||12)
        {
           s2.year=p->year;
           s2.month=p->month;
           s2.day=p->day+1;
        }
        else
        {
           s2.year=p->year;
           s2.month=p->month+1;
           s2.day=1;
        }
    else
        if(p->month==12)
        {
            s2.year=p->year+1;
            s2.month=1;
            s2.day=1;
        }
        else
        {
           s2.year=p->year;
           s2.month=p->month+1;
           s2.day=1;
        }
    printf("输出新的日期:%d年%d月%d日\n",s2.year,s2.month,s2.day);
}
2014-07-25 12:51
快速回复:输入今天的日期,求明天的日期,出错了,不知怎么回事
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025051 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved