かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】



このエントリーをはてなブックマークに追加
カレンダー(今年1月〜12月)

#include <stdio.h>
#include <time.h>
    
void print_calendar(void) {
    int    m, i, year, startwday, endmday;
    int    days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};    /* 1月〜12月の日数 */
    int    count = 0;
    time_t    timer;
    struct tm *date;

    timer = time(NULL);
    date = localtime(&timer);
    year = date->tm_year + 1900;                        /* 今年 */
    if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {        /* うるう年 */
        days[1]++;                            /* 2月の日数を1日増やす */
    }
    startwday = (date->tm_wday - date->tm_yday % 7 + 7) % 7;        /* 1月1日の曜日 */
    printf("<table align=\"center\" cellpadding=\"7\">\n");
    printf("<tr><th colspan=\"4\"><big>%d</big><small>年</small></th></tr>\n", year);
    for(m = 0 ; m < 12 ; m++) {                        /* 1月〜12月のカレンダー表示 */
        if(m % 4 == 0) {
            printf("    <tr>\n");
        }
        endmday = days[m];                        /* 最後の日 */
        count = 0;
        printf("    <td valign=\"top\">\n");
        printf("<table border=\"2\" bordercolor=\"#cc0033\" cellspacing=\"0\" cellpadding=\"5\">\n");
        printf("<tr>\n");
        printf("<th colspan=\"7\"><big>%d</big><small>月</small></th>\n", m + 1);
        printf("</tr>\n");
        printf("<tr>\n");
        printf("<td align=\"center\"><small style=\"color:red\">日</small></td>\n");
        printf("<td align=\"center\"><small>月</small></td>\n");
        printf("<td align=\"center\"><small>火</small></td>\n");
        printf("<td align=\"center\"><small>水</small></td>\n");
        printf("<td align=\"center\"><small>木</small></td>\n");
        printf("<td align=\"center\"><small>金</small></td>\n");
        printf("<td align=\"center\"><small style=\"color:blue\">土</small></td>\n");
        printf("</tr>\n");

        for(i = 0 ; i < startwday; i++) {                /* 1日までの空欄 */
            if(count % 7 == 0) {
                printf("<tr>\n");
            }
            printf("<td> </td>\n");
            count++;
        }
        for(i = 1 ; i <= endmday; i++) {                /* 日付を表示 */
            if(count % 7 == 0) {
                printf("<tr>\n");
            }
            printf("<td align=\"right\"", i);
            if(count % 7 == 0) {
                printf(" style=\"color:red\"", i);
            }
            else if(count % 7 == 6) {
                printf(" style=\"color:blue\"", i);
            }
            printf(">%d</td>\n", i);
            count++;
            if(count % 7 == 0) {
                printf("</tr>\n");
            }
        }
        startwday = count % 7;                        /* 次月1日の曜日 */
        while(count < 42) {                        /* 最後の日からの空欄 */
            printf("<td> </td>\n");
            count++;
            if(count % 7 == 0) {
                printf("</tr>\n");
            }
        }
        printf("</table>\n");
        printf("    </td>\n");
        if(m % 4 == 3) {
            printf("    </tr>\n");
        }
    }
    printf("</table>\n");
}

int main(void) {
    printf("Content-type: text/html\n\n");
    printf("<html>\n");
    printf("<head>\n");
    printf("<title>カレンダー</title>\n");
    printf("</head>\n");
    printf("<body>\n");
    print_calendar();
    printf("</body>\n");
    printf("</html>\n");
    return 0;
}
かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】