Linuxに標準でついているcalコマンドですが、これをコマンドライン引数でない仕様に変えたのが次のプログラム。
#include<stdio.h>
int main(void){
unsigned int year,month,i,j,k,days=31,youbi;
scanf("%u %u",&year,&month);
puts("Sun Mon Tue Wed Thu Fri Sat");
year%=2000;
year+=2000;
youbi=((month+1)*26/10+year%100+year%100/4+(year/100)/4+(year/100)*5)%7;
switch(month){
case 2:
days-=(year%4==0&&(year%100!=0||year%400==0))?1:2;
case 4:
case 6:
case 9:
case 11:
days-=1;
}
for(i=1;i<=days;i++){
if(i==1){
for(j=0;j<youbi;j++) printf(" ");
}
printf("%3u",i);
if(youbi==6){
putchar('\n');
youbi=0;
}else{
putchar(' ');
youbi++;
}
}
putchar('\n');
return 0;
}
0 件のコメント:
コメントを投稿