最近准备毕业设计,难啊。一时无聊,用C写了一个万年历,放到这来,让喜爱编程的朋友交流下,希望大家多指点! 此万年历只供大家交流,请勿为了应付作业直接COPY!
这个万年历的主要思想就是找到输入年份的距离公元0年1月1日的天数,我将这一天定义为了被认为是一周的开始——星期天,如果你不喜欢这么定义,可以自己更改!不过貌似现在的电子日历都是讲公元0年1月1日定为星期天的,为了和世界接轨,还是别改了!哈哈!
代码如下:
#define Y 365
int year(int y);/*find the day of before the year inputted */
int month(int m,int d );/*find the day of year inputted*/
void week(int d);/*find the answer*/
void main()
{
int y,m,d;
int day;
printf(“input the date(like 2009 11 11):”);
while(scanf(“%d %d %d”,&y,&m,&d))
{
day=(m,d+year(y));
printf(“%d %d %d is the %dth day of %d,it's “,y,m,d,month(m,d),y);
week(day);
printf(“input again or print q to leave!\n”);
}
}
int month(int m,int d)
{
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int day1=0,m1=0;
if(m>1&&m<=12)
{
for(m1=1;m1
day1=day1+d;
}
else if(m=1)
day1=d;
return day1;
}
int year(int y)
{
int y1,d1,count=0;
for(y1=0;y1<=y-1;y1++)
{
if(y1%4==0&& ( y1 % 100 != 0 || y1 % 400 == 0))
++count;
else
continue;
}
d1=y*Y+count;
return d1;
}
void week(int d)
{
switch(d%7)
{
case 0: printf(“Sunday\n”);break;
case 1: printf(“Monday\n”);break;
case 2: printf(“Tuesday\n”);break;
case 3: printf(“Wednesday\n”);break;
case 4: printf(“Thursday\n”);break;
case 5: printf(“Friaday\n”);break;
case 6: printf(“Saturday\n”);break;
}
}


2011年01月4日 1:24 下午
lz 。。貌似写错了。。我查看2011.1.4显示为星期三,其实是星期二…
[回复]
2009年11月19日 2:24 上午
看望好友,祝您快乐!
╭ ⌒╮ ╭ ⌒╮ ╭⌒╮
╭ ⌒╮ ╭⌒╮ ╭⌒╮
∵╭ ∵╭ ∴╭ ☆╭ ∴ ★∵∴
..∵ ∴★∴ ╭ ╯╭ ╯╭ ╯╭ ╯∴∵∴
.☆.∵∴∵.∴∵∴▍▍ ▍▍ ▍▍ ▍▍☆ ★∵∴
真诚在朋友你我的心间,开心在朋友您我的日子,
牵挂是一种心底的美丽,思念是一种情怀的泄流.
拜访好友!祝您开心快乐每一天!
[回复]
2009年11月19日 2:18 上午
看望好友,祝您快乐!
╭ ⌒╮ ╭ ⌒╮ ╭⌒╮
╭ ⌒╮ ╭⌒╮ ╭⌒╮
∵╭ ∵╭ ∴╭ ☆╭ ∴ ★∵∴
..∵ ∴★∴ ╭ ╯╭ ╯╭ ╯╭ ╯∴∵∴
.☆.∵∴∵.∴∵∴▍▍ ▍▍ ▍▍ ▍▍☆ ★∵∴
真诚在朋友你我的心间,开心在朋友您我的日子,
牵挂是一种心底的美丽,思念是一种情怀的泄流.
拜访好友!祝您开心快乐每一天!
[回复]
2009年11月12日 3:34 下午
多谢博主分享
[回复]
2009年11月11日 12:08 下午
然后怎么用呢?
[回复]
ZNZ 回复:
十一月 11th, 2009 at 12:13 下午
程序源码当然是在Visual Studio 里咯
[回复]