• ZSTU-4242-校庆【浙江理工2016全国新生邀请赛E题】


    4242: 校庆
    Time Limit: 1 Sec Memory Limit: 128 MB
    Submit: 1754 Solved: 657
    Description
    2017年10月28日是zstu的120周年校庆,撒花,撒花。为此KI决定设计一个程序,来庆祝我们的校庆:
    给出某一天的日期year-month-date, 求这一天到2017-10-28还差几天。
    Input
    第一行有个整数T, 表示测试组数。T≦100。
    接下来每个测试组,给出三个数year month date。(1900 <=year <=2017 ), 保证每个日期均合法,并且小于2017-10-28。
    Output
    对于每个测试组,请输出对应的答案。

    Sample Input
    1
    2017 10 1
    Sample Output
    27

    分三种情况讨论,当时复制粘贴上半部分的函数,搞得下面一起弄错了,结束了才发现错误,算法没错,被自己坑了·····orz

    #include<stdio.h>//667
    int yeardays(int y)//计算每年多少天的函数
    {
        if((y%4==0&&y%100!=0)||(y%400==0))
            return 366;
        else
            return 365;
    }
    int main()
    {
        int t,y,m,d,i;
        int a[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};//平年
        int b[13]= {0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年
        scanf("%d",&t);//t组数据
        while(t--)
        {
            int sum=0;
            scanf("%d%d%d",&y,&m,&d);//年月日
    
            if(y==2017)//第一种情况,当年份为2017年时
            {
                if(m==10)
                {
                    printf("%d
    ",28-d);
                }
                else
                {
                    for(i=m+1; i<10; i++)//当月除外,从下个月加到9月,这是完整的月份
                    {
                        sum=sum+a[i];
                    }
                    sum=sum+a[m]-d+28;//从m月开始,因此m月只剩下a[m]-d天,最后加上十月份天数
                    printf("%d
    ",sum);
                }
            }
    
            else if(y==2016)//第二种情况,当年份为2016年时
            {
                for(i=1; i<m; i++)//因为是2016年,因此2017年完整的确定为301天
                {
                    sum=sum+b[i];//只需要计算此时日期是16年的第几天
                }
                sum=sum+d;
                sum=366-sum+301;//然后计算今年剩余的天数,再加上17年的301天
                printf("%d
    ",sum);
            }
    
            else//第三种情况,当年份为2016年之前时
            {
                if((y%4==0&&y%100!=0)||(y%400==0))//判断平年闰年
                {
                    for(i=1; i<m; i++)
                    {
                        sum=sum+b[i];
                    }
                    sum=sum+d;
                    sum=366-sum;//与之前一样,判断当年剩下的天数
                    for(i=y+1; i<2016; i++)
                    {
                        sum=sum+yeardays(i);//从当年之后的年份往后加
                    }
                    printf("%d
    ",sum+667);
                }
                else
                {
                    for(i=1; i<m; i++)
                    {
                        sum=sum+a[i];
                    }
                    sum=sum+d;
                    sum=365-sum;//与之前一样,判断当年剩下的天数
                    for(i=y+1; i<2016; i++)
                    {
                        sum=sum+yeardays(i);
                    }
                    printf("%d
    ",sum+667);
                }
            }
    
        }
        return 0;
    }
    
  • 相关阅读:
    我爱工程化 之 gulp 使用(二)
    我爱工程化 之 gulp 使用(一)
    用户体验之输入框设想
    SEO优化
    js代码优化
    RequireJs 依赖管理使用
    Git 安装与使用(一)
    Webstorm 配置与使用 Less
    Less使用——让老司机带你飞
    Node安装与环境配置
  • 原文地址:https://www.cnblogs.com/kuronekonano/p/11794349.html
Copyright © 2020-2023  润新知