C语言 假定2000年1月1日周六,用户输入年、月、日后计算这一天是周几?
答案:3 信息版本:手机版
解决时间 2019-10-05 11:31
已解决
2019-10-04 19:19
主要是怎么算总天数,能解释一下嘛
最佳答案
2019-10-04 19:55
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
w:0-6对应星期日-星期六 c:世纪-1(前两位数)y:年(后两位数)m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,d:日[ ]代表取整,即只要整数部分。这个是蔡勒(Zeller)公式
全部回答
1楼
2019-10-04 20:31
周长=直径*圆周率#include"stdio" #define pi 3.1415 main(void){double r,z;scanf("%lf",&r);z=2*r*pi;printf("周长是%lf!",z);}
2楼
2019-10-04 20:13
#include
int isly(int year)
{
return ((!(year%4))&&(year%100)||(!(year%400)));
}
int mtod(int m)
{
int n=0;
switch(m)
{
case 1:n=31;break;
case 2:n=59;break;
case 3:n=90;break;
case 4:n=120;break;
case 5:n=151;break;
case 6:n=181;break;
case 7:n=212;break;
case 8:n=243;break;
case 9:n=273;break;
case 10:n=304;break;
case 11:n=334;break;
default:n=0;
}
return n;
}
int dmax(int y,int m,int d)
{
if(m==2)
{
return 28+(isly(y));
}
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12))
return 31;
return 30;
}
int main()
{
int y,m,d;
int lyn=0;
int dn=0;
char* cday[]={"六","日","一","二","三","四","五"};
printf("输入年月日:");
do
{
scanf("%d%d%d",&y,&m,&d);
if(m<13&&m>0&&d>0&&d<=dmax(y,m,d))
break;
else
printf("该日期不存在,请重新输入:");
}
while(1);
if(y>=2000)
{
for(int i=2000;i<=y;i++)
{
lyn+=isly(i);
}
if(isly(y))
{
if(m<2||(m==2&&d<=29))
lyn--;
}
dn=(y-2000)*365+mtod(m-1)+d+lyn-1;
printf("%d年%d月%d日是星期%s\n",y,m,d,cday[dn%7]);
}
if(y<2000)
{
for(int i=y;i<2000;i++)
{
lyn+=isly(i);
}
if(isly(y))
{
if(m>2)
lyn--;
}
dn=(2000-y)*365-mtod(m-1)-d+lyn+1;
printf("%d年%d月%d日是星期%s\n",y,m,d,cday[(7-dn%7)%7]);
}
return 0;
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯