カレンダー(今年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; }
〔 実行する 〕