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