C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出。

编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出。

#include <stdio.h>
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");
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-19
void main( )
{
int year=2006,month=1,day=28,total,week,i;
bool leap=0;
leap = (year%400==0)| (year%100!=0) & (year%4==0);
week =1; //起始日 1979-12-31是星期一
total = year-1980+(year-1980+3)/4; //求平(闰)年累计的总天数
for (i=1;i<=month-1;i++) //当年的累计天数
switch (i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: total+=31;
break;
case 4:
case 6:
case 9:
case 11: total+=30;
break;
case 2: if (leap)
total+=29;
else
total+=28;
break;
}
total = total+day; //当月的天数
week = (week+total) % 7; //求得星期几
switch (week)
{
case 0: System.out.println("Sunday"); break;
case 1: System.out.println("Monday"); break;
case 2: System.out.println("Tuesday"); break;
case 3: System.out.println("Wednesday");break;
case 4: System.out.println("Thursday"); break;
case 5: System.out.println("Friday"); break;
case 6: System.out.println("Saturday"); break;
}
}
相似回答