>>370を面白そうだからやってみた
#include<stdio.h>
#include<conio.h>
int z(int y,int m,int d){
if(m<3) y--,m+=12;
return (y+y/4-y/100+y/400+(13*m+8)/5+d)%7;
}
int main(void){
while(1){
int y,m,d;
printf("\ny=",y); scanf("%d",&y);
printf("m=",m); scanf("%d",&m);
for(d=0;d<z(y,m,1);d++) printf("  ");
for(d=1;d<(z(y,m+1,1)-z(y,m,1)+7)%7+29;d++){
#if 1
if(z(y,m,d)%7==0) printf("\n"),textcolor(LIGHTRED);
else if(z(y,m,d)%7==6) textcolor(LIGHTBLUE);
else textcolor(WHITE);
cprintf("%3d",d);
#else
if(z(y,m,d)%7==0) printf("\n\033[31m%d",d);
else if(z(y,m,d)%7==6) printf("\033[34m%d",d);
else printf("\033[0m%d",d);
#endif
}
}
}