My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
我编的年月日,楼主参考下,判断星期几的,和你那个差不多
#include<stdio.h>
void main()
{
int y,m,d1,d;
int a[12]={0,3,3,6,1,4,6,2,5,0,3,5};
int b[12]={0,3,4,0,2,5,0,3,6,1,4,6};
printf("请输入年");
scanf("%d",&y);
printf("请输入月");
scanf("%d",&m);
printf("请输入日");
scanf("%d",&d1);
d=y+y/4-y/100+y/400-1;
if((y%4==0)&&(y%100!=0)&&(y%400==0))
d+=b[m-1];
else
d+=a[m-1];
d+=d1;
if(d%7==0)
printf("星期天");
else
printf("星期%d",d%7);
}
我编的年月日,楼主参考下,判断星期几的,和你那个差不多
#include<stdio.h>
void main()
{
int y,m,d1,d;
int a[12]={0,3,3,6,1,4,6,2,5,0,3,5};
int b[12]={0,3,4,0,2,5,0,3,6,1,4,6};
printf("请输入年");
scanf("%d",&y);
printf("请输入月");
scanf("%d",&m);
printf("请输入日");
scanf("%d",&d1);
d=y+y/4-y/100+y/400-1;
if((y%4==0)&&(y%100!=0)&&(y%400==0))
d+=b[m-1];
else
d+=a[m-1];
d+=d1;
if(d%7==0)
printf("星期天");
else
printf("星期%d",d%7);
}
恩,不错!比我编的好多了。不过我想问一下 int a[12]={0,3,3,6,1,4,6,2,5,0,3,5};
int b[12]={0,3,4,0,2,5,0,3,6,1,4,6};
是怎么推出来的?我知道上面一个是平年的,下面一个是润年的
这里面是不是用到什么更深的东西?
还有这个算法啊,以前还没听过呢,太经典了!
容我再问一个白痴的问题0是代表什么?是12月吗?我算出来12月应该为1啊
还有算哪天是星期几,是不是要个基础日期,以他为基础算出其他的(通过某天的情况推算其他的),或者这里面还有什么规律,还请赐教!
我刚才也编了个关于星期几的,就是输入今天是星期几,然后再输入一个天数(可为负),推出那天是星期几,这个就用了“今天”这个基础日期
#include "stdio.h"
int main()
{
int n,m;
printf("今天是星期?{0,6}");
scanf("%d",&m);
if(m>=0&&m<=6)
printf("today is xingqi%d\n",m);//输入今天是星期几,以计算N天过后是星期几
else
{printf("error input\n");
return 0;} //当输入超出范围时返回
printf("input the day:\n");
scanf("%d",&n);
if(n>=0)
n=n%7;
else{ //当输入是负数是,则表示几天前
n=-n;
n=n%7;
n=7-n;}
n=n+m;
n=n%7;
switch(n)
{
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("Friday\n");break;
case 6:
printf("Saturday\n");break;
case 0:
printf("Sunday\n");break;
}
}
如果你输入的是1月,那就不需要加前个月的天数了,所以为0
其实a[12]和b[12]里面的每个元素代表的是 该月应该加上的天数,
如果你输入的是1月,那就不需要加前个月的天数了,所以为0
其实a[12]和b[12]里面的每个元素代表的是 该月应该加上的天数,
哦,这个懂了,谢谢啊!
还有那个基点日期的问题,你是怎么理解的?能告诉我吗?或者还有什么其他规律?