设计一个C语言程序,求公元y年m月d日的星期号(1~6表示星期一~星期六,0表示星期日)
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/06 21:37:48
设计一个C语言程序,求公元y年m月d日的星期号(1~6表示星期一~星期六,0表示星期日)
#include
void main ()
{
int y,m,d,c,s,w;
printf("请输入8位年月日,以空格隔开:");
scanf("%d%d%d",&y,&m,&d);
if (m==1) c=d;
else if (m==2) c=31+d;
else if (m==3) c=31+28+d;
else if (m==4) c=31+28+31+d;
else if (m==5) c=31+28+31+30+d;
else if (m==6) c=31+28+31+30+31+d;
else if (m==7) c=31+28+31+30+31+30+d;
else if (m==8) c=31+28+31+30+31+30+31+d;
else if (m==9) c=31+28+31+30+31+30+31+31+d;
else if (m==10) c=31+28+31+30+31+30+31+31+30+d;
else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;
else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;
if (m>2)
{if (y%100==0) {if (y%400==0) c=c+1;}
else if (y%4==0) c=c+1;}
s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;
w=s%7;
switch (w)
{
case 0:printf("星期日");break;
case 1:printf("星期一");break;
case 2:printf("星期二");break;
case 3:printf("星期三");break;
case 4:printf("星期四");break;
case 5:printf("星期五");break;
case 6:printf("星期六");break;
printf("\n");
}
}
这个可以的.
再问: 错了,如果是闰年呢
再答: 根据闰年的定义(能被4整但不能被100整除或能被400整),得到计算闰年的个数的算式:y/4 - y/100 + y/400。 由于我们要计算的是当前要计算的年之前的闰年数,所以要将年减1,得到了如下的公式: w = [d-1+y + (y-1)/4-(y-1)/100+(y-1)/400] % 7 w = (d-1 + y + e[m-1] + (y-1)/4 - (y-1)/100 + (y-1)/400); if(m>2 && (y%4==0 && y%100!=0 || y%400==0) && y!=0) ++w; w %= 7; 现在,已经可以正确的计算任一天的星期了。 注意:0年不是闰年,虽然现在大都不用这个条件,但我们因从公元0年开始计算,所以这个条件是不能少的。 由此带来的影响是如果当年是闰年,1,2月份的计算会多一天误差,我们同样在编程时修正。则代码如下 w = (d-1 + y + e[m-1] + y/4 - y/100 + y/400); ---- 公式⑷ if(m>2)-y/100+y/400); if(m
void main ()
{
int y,m,d,c,s,w;
printf("请输入8位年月日,以空格隔开:");
scanf("%d%d%d",&y,&m,&d);
if (m==1) c=d;
else if (m==2) c=31+d;
else if (m==3) c=31+28+d;
else if (m==4) c=31+28+31+d;
else if (m==5) c=31+28+31+30+d;
else if (m==6) c=31+28+31+30+31+d;
else if (m==7) c=31+28+31+30+31+30+d;
else if (m==8) c=31+28+31+30+31+30+31+d;
else if (m==9) c=31+28+31+30+31+30+31+31+d;
else if (m==10) c=31+28+31+30+31+30+31+31+30+d;
else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;
else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;
if (m>2)
{if (y%100==0) {if (y%400==0) c=c+1;}
else if (y%4==0) c=c+1;}
s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;
w=s%7;
switch (w)
{
case 0:printf("星期日");break;
case 1:printf("星期一");break;
case 2:printf("星期二");break;
case 3:printf("星期三");break;
case 4:printf("星期四");break;
case 5:printf("星期五");break;
case 6:printf("星期六");break;
printf("\n");
}
}
这个可以的.
再问: 错了,如果是闰年呢
再答: 根据闰年的定义(能被4整但不能被100整除或能被400整),得到计算闰年的个数的算式:y/4 - y/100 + y/400。 由于我们要计算的是当前要计算的年之前的闰年数,所以要将年减1,得到了如下的公式: w = [d-1+y + (y-1)/4-(y-1)/100+(y-1)/400] % 7 w = (d-1 + y + e[m-1] + (y-1)/4 - (y-1)/100 + (y-1)/400); if(m>2 && (y%4==0 && y%100!=0 || y%400==0) && y!=0) ++w; w %= 7; 现在,已经可以正确的计算任一天的星期了。 注意:0年不是闰年,虽然现在大都不用这个条件,但我们因从公元0年开始计算,所以这个条件是不能少的。 由此带来的影响是如果当年是闰年,1,2月份的计算会多一天误差,我们同样在编程时修正。则代码如下 w = (d-1 + y + e[m-1] + y/4 - y/100 + y/400); ---- 公式⑷ if(m>2)-y/100+y/400); if(m
C语言.求指教!已知公元1年1月1日是星期一.计算输入的年月日是星期几.
在一个月里,星期一多余星期二,星期日多余星期六,那么这个月的5日是星期?
已知公元1年1月1日是星期一,计算输入的年月日是星期几?(用C语言编写)
2013年5月3日是星期五,则2013年5月18日是 A星期五 B星期六 C星期日 D星期一.
2003年6月有5个星期日,四个星期六.那么2008年6月1日是星期几
c语言编程题 已知2012年1月1日是星期日,现在输入其后的任意一个日期(年份不超过9999),计算该日是星期几.
c语言,已知1年1月1日是星期一,计算输入的年月日是星期几
如果六月份有5个星期六和星期日,那么6月1日是星期几?
如果六月份有五个星期六和五个星期日,那6月1日是星期几?
vb 给定年月日(1900年以后的日期),求这一天是星期几.不可使用标准函数. 公元1年1月1日是星期一
王朋星期一至星期五每天工作8小时,星期六工作4小时,星期日休息.如果用y表示王朋x个星期中工作的时间(时),请写出y与x
科学知识竞赛问题564.七天为一个星期,开始于 .A.公元1年 B.公元321年3月7日C.公元406年3月7日 D.公