标题:简化优化程序
只看楼主
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
结帖率:78.13%
已结贴  问题点数:20 回复次数:4 
简化优化程序





从键盘输入一个日期,格式为yyyy-M-d
要求计算该日期与1949年10月1日距离多少天
例如:
用户输入了:1949-10-2
程序输出:1
用户输入了:1949-11-1
程序输出:31
帮忙优化简化一下程序,这个程序觉得有点繁琐了

#include <stdio.h>
main()
{
    int year,month,day,sum=0;
    printf("please input year,month and day\n");
    scanf("%d-%d-%d",&year,&month,&day);
    int days[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
    int flag=(year%4==0&&year%100!=0)||year%400==0?1:0;
    if(year>1949)
    {
        sum+=day;
        for(int i=0;i<month;i++)
        {
            sum+=days[flag][i];
        }
        for( i=1949;i<year;i++)
        {
            if((year%4==0&&year%100!=0)||year%400==0)
            {
                sum+=1;
            }
        }
        
        sum=sum+30+30+31;
        sum=sum+(year-1950)*365;
    }
    if(year==1949)
    {
        if(month>10)
        {
            sum+=day;
            for(int i=10;i<month;i++)
            {
                sum+=days[flag][i];
            }
        }
        else
    {
        if(month<10)
        {
            sum+=days[flag][month]-day;
            for(int i=month+1;i<10;i++)
            {
                sum+=days[flag][i];
            }
        }
        else
        {
            sum=sum+day-1;
        }
    }
    }
    if(year<1949)
    {
        sum+=days[flag][month]-day;
        for(int i=month+1;i<13;i++)
        {
            sum+=days[flag][i];
        }
        for(i=0;i<10;i++)
        {
            sum+=days[flag][i];
        }
        for(i=year+1;i<1949;i++)
        {
            if((year%4==0&&year%100!=0)||year%400==0)
            {
                sum+=366;
            }
            else
            {
                sum+=365;
            }
        }
    }
    printf("%d\n",sum);
}
搜索更多相关主题的帖子: include 用户 please 
2013-01-25 17:20
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:5 
查一下difftime函数的相关资料

重剑无锋,大巧不工
2013-01-25 17:47
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
得分:0 
看完difftime依然没思路
2013-01-25 22:11
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:5 
diff什么开头的函数貌似就是求2个时间段的时间差滴

DO IT YOURSELF !
2013-01-25 22:14
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3450
专家分:19340
注 册:2012-3-31
得分:5 
路过

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2013-01-26 04:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-397642-1-1.html




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

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