求这一年的第几天C语言程序,求一年中某一天在该年第几星期和是该年的第几天 c语言程序...

匿名用户

1级

2013-02-23 回答

#include

//累加天数表

int dayInfo[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

//星期提示校正,避免星期日被显示出星期7

char weeks[][3] = {"一","二","三","四","五","六","日"};

/*

计算闰年

*/

int isLeap(int y)

{

if((y%4==0 && y%100!=0) || (y%400)==0)

return 1;

return 0;

}

/*

就算天数,累加法,闰年超过2月则多加1

*/

int computeDay(int y,int m,int d)

{

int day = 0;

for(int i=1;i

{

day += dayInfo[i];

}

day += d;

if(m>2 && isLeap(y))day += 1;

return day;

}

/*

基姆拉尔森计算公式

W = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) % 7,其中y是年,m是月,d是日,

有两点要注意:当m是一月或2月时,算作上一年的13月或14月,例如:2013-1-1应记作2012-13-1

此公式算出来的星期从0开始

*/

int computeWeek(int y,int m,int d)

{

if(m==1 || m==2) { m += 12; y--; }

return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) % 7;

}

int main()

{

int y,m,d;

int day,week;

printf("输入日期,格式为:年 月 日,例如:2013 2 22:");

scanf("%d %d %d",&y,&m,&d);

day = computeDay(y,m,d);

week = computeWeek(y,m,d);

printf("%d 年 %d 月 %d 日是 %d 年中的第 %d 天,这一天是星期 %s。\n",y,m,d,y,day,weeks[week]);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值