【日期】再算星期

【日期】再算星期

再次给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。

输入:

年 月 日

输出:

0~6。星期日用 0 表示,星期一用 1 表示,星期二用 2 表示…星期六用 6 表示。

假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?
因为有根据日期求星期的基础,这里不再提供流程图和思路

代码

#include <stdio.h>
int a[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};  
int main(){  
    int y,m,d;  
    scanf("%d %d %d",&y,&m,&d);
    if(m>12||m<1) 
	{
		printf("month is error.\n");
		return 0;
	}  
    if(y%4==0&&y%100!=0||y%400==0) a[2]=29;
    if(d>a[m]||d<1)
    {
    	printf("day is error.\n");
    	return 0;
	}
    int ans=d,i;  
    for(i=1;i<=m-1;i++){  
        ans+=a[i];  
    }  
    int s,r;  
    s=y-1+(y-1)/4-(y-1)/100+(y-1)/400+ans;   
    printf("%d\n",s%7);
    return 0;  
}  
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值