高级语言课程设计报告第三次报告: 日期的处理

高级语言课程设计报告

实习题目

第三次报告: 日期的处理

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\n",days);

printf("%d\n",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

高斯日记:同上。

posted @ 2017-02-20 19:58  拓海藤原  阅读(215)  评论(0编辑  收藏  举报