计算星期几--C语言

来源:互联网 发布:杨幂挑拨周迅赵薇 知乎 编辑:程序博客网 时间:2024/05/11 15:42

 

有趣的蔡勒公式计算某年某月某日是星期几

 

输出截图:

 

 

源码:

 

/* * calendar.c * * crazyleen <ruishengleen@gmail.com> *//* * give month and year, print week of this month */#include "stdio.h"#include <string.h>#include "conio.h"/** * dayofweek - 蔡勒公式 calculate the week day of one day * @return: 0 Sun, 1 Mon, 2 Tue, 3 Wed, 4 Thu, 5 Fri, 6 Sat */int dayofweek(int y, int m, int d){       static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};       if (m < 3)           y -= 1;       return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;}int isleapyear(const int y) {    return (int)((y%400 == 0) || (y%4 == 0 && y%100 != 0));}int getdays_month (const int year, const int month) {        switch (month) {        case 2: return isleapyear(year) ? 29 : 28;        case 4:        case 6:        case 9:        case 11: return 30;        default: return 31;        }}void printmonth(const int y, const int m){    int firstday;    int days;    int i;    days = getdays_month(y, m);    firstday = dayofweek(y, m, 1);    printf("%d %d\n", y, m);    printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");    i = firstday;    while(i > 0) {        printf("\t");        i--;    }    for(i = 1; i <= days; i++){        if ((firstday + i - 1) % 7 == 6)            printf("%d\n", i);        else            printf("%d\t", i);    }}int main(int argc, char **argv){    int year, month;    int i;    scanf("%d %d", &year, &month);    printmonth(year, month);    return 0;}


原创粉丝点击