用C语言编写一个万年历时候,怎么确定一年中第一天是星期几?

 我来答
呼啸长风2020
推荐于2019-08-15 · TA获得超过272个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:161万
展开全部
#include "stdafx.h"
#include<stdio.h>

int fun(int year)
{
int sum=0;
if(year>2011)
{
while(year>2011)
{
year--;
if(year%4==0&&year%100!=0||year%400==0) sum+=2;
else sum+=1;
}
return (sum+6)%7;
}

while(year<2011)
{
if(year%4==0&&year%100!=0||year%400==0) sum-=2;
else sum-=1;
year++;
}
return 6+sum%7;

}

void main()
{
int y,w;
printf("请输入年份:");
scanf("%d",&y);
w=fun(y);
if(w==0)
printf("%d年1月1日是星期天。\n",y);
else
printf("%d年1月1日是星期%d。\n",y,w);
}

编程思路:
首先,需知道某一年第一天是星期(2011年1月1日是星期六);

之后,算出某年与2011年共相差几天(本程序中用sum累计),

如果year>2011,先自减一,计算year-1那年有多少天
考虑到365%7=1,366%7=2,所以用sum+=1和sum+=2分别统计平年和闰年应该加多少天
最后,返回(sum+6)%7,(2011年1月1日是星期6)

如果year<2011,先减sum,再year++,
比如2008年1月1日,如果先year++,那当年的天数就误作365天处理了(year++后成了2009,不是闰年)
最后返回值的表达式与year>2011的不同,因为sum是往回减的

当然如果year=2011,两处循环的表达式都不符合,直接返回6

主函数中,根据返回值决输出,此处把0作星期天处理
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式