计算星期

题目内容:

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


输入格式:

年 月 日


输出格式:

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

假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?


输入样例:

2013 3 11

输出样例:

1


输入样例:

2013 13 15

输出样例:

month is error.



输入样例:

2013 3 32

输出样例:

day is error.
蔡勒(Zeller)公式,即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 
 
#include<stdio.h>

int main()
{
   int year,month,day;
   scanf("%d %d %d",&year,&month,&day);
   if(12<month||month<1)
   {
        printf("month is error.\n");
        exit(0);
   }
   if(31<day || day<1)
   {
        printf("day is error.\n");
        exit(0);
   }
   int y,c,d;
   y=year%100;
   c=year/100;
    d=y+y/4+c/4-2*c+26*(month+1)/10+day-1;
    int w=d%7;
    switch(w)
    {
        case 0:printf("0");break;
        case 1:printf("1");break;
        case 2:printf("2");break;
        case 3:printf("3");break;
        case 4:printf("4");break;
        case 5:printf("5");break;
        case 6:printf("6");break;
    }
    return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值