zoukankan      html  css  js  c++  java
  • 高级语言课程设计报告第三次报告: 日期的处理

    高级语言课程设计报告

    实习题目

    第三次报告: 日期的处理

    l 阅读群文件《程序设计导引及在线实践》5章日期和时间处理之5.1-5.35.4选看。

    l 完成ACM俱乐部作业:2015cup实习3日期的处理

    l 描述你的算法,注释你的程序。

    l 注意勿抄袭:全系统自动判定抄袭,一旦抄袭,0分。

    一、实习目的:

    二、针对你的每一道题目:

    1.算法描述。

    出生年份的日期分为三种:六月二号以后的;三月一日之后六月二号以前的;三月一日以前的。分别用不同的方法进行计算,但都是先算到2014年同一天的天数再进行加减。

    2.你的代码及注释。

    端午节:

    #include <stdio.h>

    int type(int );

    int year[2]={365,366};                          //闰平年天数的区分

    int month[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31}; //闰平年月份天数的区分

    int main()

    {

    int days=0,week;

    int i = 0, j = 0,a,b,c;

    scanf("%d-%d-%d",&a,&b,&c);

    if(b>6||(b==6&&c>=2)) //第一种:6.2~12.31

    {

    for(i=a;i<2014;i++)

    days+=365+type(i+1); //算出到2014年这一天的天数

    for(i=6;i<b;i++)

    {days-=month[1][i];} //减去多出来的整月份天数

    days=days+3-c;                           //减去多出来的日数

    }

    else

    {

    if(b>=3) //第二种:3.1~6.1

    {

    for(i=a;i<2014;i++)

    days+=365+type(i+1); //与上同理

    for(i=b+1;i<6;i++)

    j+=month[0][i];

    j=j+month[0][b]-c+2;

    days-=j; //加上月份的天数减去日的天数

    }

    else //第三种:1.1~2.28(29)

    {

    for(i=a;i<2014;i++)

    days+=365+type(i); //与上同理

    for(i=b+1;i<6;i++)

    j+=month[0][i];

    j=j+month[0][b]-c+2; //与第二种同理,在这里区分了闰平年

    days-=j;

    }

    }

    printf("%d ",days);

    printf("%d ",7-(days-2)%7);

    }

    int type(int m) //区分闰平年的函数

    {

    if(m % 4 != 0 || (m % 100 == 0 && m % 400 != 0))

    return 0;

    else return 1;

    }

     

    高斯日记:(道理跟上面的完全相反)

    #include<stdio.h>

    int main()

    {

        int a=8113,b,c,d,z=0,i=0,t,u,f;

        int month1[12]={31,29,31,30,31,30,31,31,30,31,30,31};

        int month2[12]={31,28,31,30,31,30,31,31,30,31,30,31};

        f=8113-31-30-31-31-30-31-30-31;

        b=f/365;

        t=b/4;

        u=b%4;

        if(u==3)

        f=f-1-t-b*365;

        else

        f=f-t-b*365;

        if(u==2)

        {

       

    while(z<f){

        z=z+month1[i];

        i=i+1;

        };

        printf("%d-0%d-%d",1778+b,i,month1[i-1]-z+f-1);

        }

        if(u!=2)

        {

       

    while(z<f){

        z=z+month2[i];

        i=i+1;

        };

        printf("%d-0%d-%d",1778+b,i,month2[i-1]-z+f-1);

        }   

    return 0;

    }

     

    1. 设计及调试过程遇到的问题及解决方案。

    端午节:本以为可以直接套用上的代码,没想到跟书上是完全相反的,妄想可以挪用一点,但是最后还是都删了,还是自己编出来的。在第一部分的日期出了问题,经过连碰带猜终于把代码改对了,然后就是星期几那,竟然输出了0,这让我很是尴尬,但是都很轻松的解决了,基本没什么问题。

    高斯日记:果真套上了代码,原来这是填空题,后来改正之后就没看,过了几天才又做完的,跟端午节的正相反,没啥了。

    1. 心得体会和自我对程序的评价。

    端午节:感觉这个代码需要反过来思考,这样就能更方便的计算,正着算是很难的,不过也有另一种方法,跟我这种类似,不过是用六月二号算罢了,程序并不难,用心短时间就能编出来,虽然我盗用了书上代码的模板。自己的程序一般,不出彩,也很普通。Over

    高斯日记:同上。

  • 相关阅读:
    复旦大学数学学院18级高等代数II期中考试第七大题的三种证法及其推广
    复旦大学2019--2020学年第一学期高等代数I期末考试情况分析
    复旦大学2019--2020学年第一学期(19级)高等代数I期末考试第六大题解答
    复旦大学2019--2020学年第一学期(19级)高等代数I期末考试第七大题解答
    复旦大学2019--2020学年第一学期(19级)高等代数I期末考试第八大题解答
    复旦高等代数I(19级)每周一题
    复旦大学数学学院 18 级本科生对每周一题的评价
    复旦大学2018--2019学年第二学期高等代数II期末考试情况分析
    复旦大学2018--2019学年第二学期(18级)高等代数II期末考试第六大题解答
    CentOS7安装MySQL
  • 原文地址:https://www.cnblogs.com/xukaiae86/p/6421138.html
Copyright © 2011-2022 走看看