c语言编程,急需!!!给出任意一天,显示是星期几?
答案:3 悬赏:70
解决时间 2021-02-15 05:36
- 提问者网友:熱戀丶瘋
- 2021-02-14 15:33
c语言编程,急需!!!给出任意一天,显示是星期几?
最佳答案
- 二级知识专家网友:兮沫♡晨曦
- 2021-02-14 16:23
#include "stdio.h"
#include "stdlib.h"
#include <memory.h>
#include <string.h>void main()
{
char Year[5],Month[3],Day[3];
char cc[3],YY[3],mm[3],WW[3];
int W; memset(Year,0x0,5);
memset(Month,0x0,3);
memset(Day,0x0,3);
memset(cc,0x0,3);
memset(YY,0x0,3);
memset(mm,0x0,3);
memset(WW,0x0,3); printf("请输入年:月:日,:");
scanf("%4s%2s%2s",Year,Month,Day); cc[0]=Year[0];
cc[1]=Year[1]; YY[0]=Year[2];
YY[1]=Year[3]; if (atoi(Month)>=3)
{
strcpy(mm,Month);
}
else if (atoi(Month)==1)
{
strcpy(mm,"13");
}
else if (atoi(Month)==2)
{
strcpy(mm,"14");
} // W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
W=atoi(cc)/4-2*atoi(cc)+atoi(YY)+atoi(YY)/4+13*(atoi(mm)+1)/5+atoi(Day)-1; switch (W%7)
{
case 0:
strcpy(WW,"日");
break;
case 1:
strcpy(WW,"一");
break;
case 2:
strcpy(WW,"二");
break;
case 3:
strcpy(WW,"三");
break;
case 4:
strcpy(WW,"四");
break;
case 5:
strcpy(WW,"五");
break;
case 6:
strcpy(WW,"六");
break;
}
printf("%s年:%s月:%s日 是星期%s\n",Year,Month,Day,WW);
}
全部回答
- 1楼网友:旧事诱惑
- 2021-02-14 16:57
蔡勒(Zeller)公式 计算历史上的某一天是星期几?未来的某一天是星期几?w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)
算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。
以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年国庆)是星期5。
- 2楼网友:抱不住太阳的深海
- 2021-02-14 16:48
#include
void main()
{
int year,month,day;
int tempmonth,yearday;
int week,weekday;
unsigned int sum=0;
int tag=0;
printf("输入年、月、日:\n");
scanf("%d %d %d",&year,&month,&day);
tag =( year - 1980 )/4;
sum=(year-1984)*365 + tag;
tempmonth = month - 1;
yearday = 0;
switch(tempmonth)
{
case 12:yearday+=31;
case 11:yearday+=30;
case 10:yearday+=31;
case 9:yearday+=30;
case 8:yearday+=31;
case 7:yearday+=31;
case 6:yearday+=30;
case 5:yearday+=31;
case 4:yearday+=30;
case 3:yearday+=31;
case 2:yearday+=28;
case 1:yearday+=31;
}
yearday = yearday+day;
if ((year-1984)%4==0 && month > 2)
{
yearday+=1;
}
sum=sum+yearday;
if (year==1984)
{
sum-=1;
}
printf("距1984年1月1日一共有%d天\n",sum);
weekday = (sum-1) % 7;
week = yearday / 7;
printf("今天是第%d个星期,星期%d",week,weekday);
return ;
}
才给这么点分。能多加点嘛?你看都没人给你做
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |