高级语言课程设计报告第三次报告: 日期的处理
高级语言课程设计报告
实习题目 |
第三次报告: 日期的处理 l 阅读群文件《程序设计导引及在线实践》5章日期和时间处理之5.1-5.3。5.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;
}
- 设计及调试过程遇到的问题及解决方案。
端午节:本以为可以直接套用上的代码,没想到跟书上是完全相反的,妄想可以挪用一点,但是最后还是都删了,还是自己编出来的。在第一部分的日期出了问题,经过连碰带猜终于把代码改对了,然后就是星期几那,竟然输出了0,这让我很是尴尬,但是都很轻松的解决了,基本没什么问题。
高斯日记:果真套上了代码,原来这是填空题,后来改正之后就没看,过了几天才又做完的,跟端午节的正相反,没啥了。
- 心得体会和自我对程序的评价。
端午节:感觉这个代码需要反过来思考,这样就能更方便的计算,正着算是很难的,不过也有另一种方法,跟我这种类似,不过是用六月二号算罢了,程序并不难,用心短时间就能编出来,虽然我盗用了书上代码的模板。自己的程序一般,不出彩,也很普通。Over
高斯日记:同上。