购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 给出年月日,计算该日是星期几

1.编程说明

根据历法原理,按照下面的公式计算,就可以知道某年某月某日是星期几了。这个公式是:

这里, x 是公元的年数, C 是从这一年的元旦算到这天为止(连这一天也在内)的日数。式中, 表示为 的整数部分,也就是说,三个分数式只取商数的整数部分,余数略去不计。求出 S 后,再用7除。如果恰能除尽,这一天一定是星期日;若余数是1,这一天是星期一;余数是2,这一天就是星期二。以此类推。程序中,占大部分篇幅的程序是在计算 C ,算 C 之前,还有判断所求年份是否是闰年,这样决定2月份是28天还是29天。

例如,要求算2016年的1月2日是星期几。

而2505%7=357余6,这说明2016年的1月2日是星期六。

2.程序清单

    /*************************************************************/
    /*1.c 给出年月日,计算该日是星期几                           */
    /*************************************************************/
    #include<stdio.h>
    main()
    {
        int a,b,c,d,s,z;
        printf("请输入年月日yyyy,mm,dd: ");
        scanf("%d,%d,%d",&a,&b,&c);
        if((a%4==0 && a%100!=0)||(a%400==0))
        {        if(b==1)d=c;
        if(b==2)d=c+31;
        if(b==3)d=c+60;
        if(b==4)d=c+91;
        if(b==5)d=c+121;
        if(b==6)d=c+152;
        if(b==7)d=c+182;
        if(b==8)d=c+213;
        if(b==9)d=c+244;
        if(b==10)d=c+274;
        if(b==11)d=c+305;
        if(b==12)d=c+335;
        }
        else{if(b==1)d=c;
        if(b==2)d=c+31;
        if(b==3)d=c+59;
        if(b==4)d=c+90;
        if(b==5)d=c+120;
        if(b==6)d=c+151;
        if(b==7)d=c+181;
        if(b==8)d=c+212;
        if(b==9)d=c+243;
        if(b==10)d=c+273;
        if(b==11)d=c+304;
        if(b==12)d=c+334;
        }
        s=a-1+(a-1)/4-(a-1)/100+(a-1)/400+d;
        z=s%7;
        if(z==0)printf("这一天为星期天。\n");
        if(z==1)printf("这一天为星期一。\n");
        if(z==2)printf("这一天为星期二。\n");
        if(z==3)printf("这一天为星期三。\n");
        if(z==4)printf("这一天为星期四。\n");
        if(z==5)printf("这一天为星期五。\n");
        if(z==6)printf("这一天为星期六。\n");
    }

3.程序运行

【例1.1】给出年月日,计算该日是星期几。

解:打开“给出年月日,计算该日是星期几?”文件夹,双击扩展名为DSW的文件,进入Visual C++ 6.0编译环境,编译程序并执行,根据屏幕提示,输入年月日,运行结果如下:

由运行结果可见,当你输入2016年5月18日时,程序告诉你这一天是星期三。 53cMTbnALb35hqATJGKaaW9LaBChWTWSt153WPNuV5VQJ0+qt6vbW8rX7JELpiBu

点击中间区域
呼出菜单
上一章
目录
下一章
×