//這個程式不見得是最好的寫法,歡迎同學務必把它改得更好。
#include <stdio.h>
#include <stdlib.h>
int ouput(int space,int month);
int main()
{
int m,month,year,space,bissextile=0;
while(1)
{
printf("----------------------------\nYear:");
scanf("%d",&year);
//當輸入小於1980年時跳出程式,
if(year<1980)
{
printf("Can not be calculated!!\n");
break;
}
/*想辦法寫出該年一開始空格數量的計算式,
先不公佈我的寫法自己先想想看。*/
space=???????????;
//判斷該年是否為閏年
if((year-1980)%4==0)
bissextile=1;
//判斷不同月份的大小月
for(m=1;m<=12;m++)
{
if(m==4||m==6||m==9||m==11)
{
month=30;
}
else if(m==2&&bissextile==1)
{
month=29;
}
else if(m==2&&bissextile==0)
{
month=28;
}
else
{
month=31;
}
printf("\nMonth %d :\n",m);
//呼叫先前打過的月曆程式
ouput(space,month);
//先計算出下個月該空幾格
space=(space+month)%7;
}
}
system("pause");
return 0;
}
int ouput(int space,int month)
{
int i,day=1;
printf(" SUN MON TUE WED THU FRI SAT\n");
for(i=1;i<=month+space;i++)
{
if(i<=space)
{
//每個日期的四格間距
printf(" ");
}
else
{
// (i 除以7的餘數)不等於 0
if((i%7)!=0)
{
printf("%4d",day);
}
else
{
printf("%4d\n",day);
}
day++;
}
}
printf("\n");
return 0;
}
沒有留言:
張貼留言