ソフトウェア開発 C言語

万年カレンダーを表示する

戻る


万年カレンダーを表示するコードは以下の通り。

/* 万年カレンダー */
#include <stdio.h>

const int mdays[] = {31, 28, 31, 30, 30, 30, 31, 31, 30, 31, 30, 31};

void calender(int yyyy, int mm)
{
    int days, i;
    int wday, y = yyyy, m = mm, d;

    /* yyyy年mm月の最初の曜日を計算する */
    if (m <= 2)
    {
        m += 12;
        y--;
    }
    wday = y + y / 4 - y / 100 + y / 400 + (26 * m + 16) / 10 + 1;
    wday = wday % 7;

    printf("  ---- %d年%d月 ----\n", yyyy, mm);
    printf(" 日 月 火 水 木 金 土\n");

    /* 月の日数を計算する */
    days = mdays[mm - 1];
    if (yyyy % 4 == 0 && !(yyyy % 100 == 0 && yyyy % 400 != 0))
    {
        /* うるう年の場合 */
        if (mm == 2)
            days++;
    }

    for(i = 0; i < wday; i++)
        printf("   ");

    for(d = 1; d <= days; d++)
    {
        printf(" %2d", d);
        wday++;
        if (wday == 7)
        {
            wday = 0;
            printf("\n");
        }
    }
    if (wday != 0)
        printf("\n");
}

int main(void)
{
    int yyyy, mm;

    printf("西暦年を表す数を入力してください: ");
    scanf("%d", &yyyy);
    printf("月を表す数を入力してください: ");
    scanf("%d", &mm);

    calender(yyyy, mm);

    return 0;
}

ソース: calender.zip


国内格安航空券サイトe航空券.com

戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system