カレンダー
#include <stdio.h> #include <time.h> void print_calendar(void) { int i, year, mon, 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; /* 今年 */ mon = date->tm_mon + 1; /* 今月 */ startwday = (date->tm_wday - date->tm_mday % 7 + 1 + 7) % 7; /* 今月1日の曜日 */ if(mon == 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) { endmday = days[mon - 1] + 1; /* 今月最後の日(うるう年) */ } else { endmday = days[mon - 1]; /* 今月最後の日 */ } printf("<table border=\"3\" bordercolor=\"#993333\" cellspacing=\"0\" cellpadding=\"5\">\n"); printf("<tr>\n"); printf(" <th colspan=\"7\"><big>%d</big><small>月</small></th>\n", mon); 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"); } } while(count % 7 != 0) { /* 最後の日からの空欄 */ printf("<td> </td>\n"); count++; if(count % 7 == 0) { 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; }
〔 実行する 〕