Junior Member
|
#include <stdio.h>
void main()
{
int i,j,k,m,n,week,year,days=0,month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
//宣告變數以及月份天數之陣列
printf("請輸入您要的年份!但請不要輸入小於1的數!\n");
for(i=0;i<1;i++) //設定迴圈以檢驗輸入的值是否符合規定
{
printf("西元:");
scanf("%d",&year);
if(year<1) //若輸入的年份低於1,則需重新輸入!
{
printf("對不起!您輸入到少於1的數了,請重新輸入一次!\n");
i--;
}
}
printf("\n\n 西元%d年\n",year);
for(j=1;j<year;j++) //用迴圈來計算在輸入的年份之前的總天數
{
if((j%4==0)&&(j%100!=0)||(j%400==0))
//判斷閏年:年份可被4整除但不被100整除,或者可以被400整除
days+=366; //若是閏年,天數加366
else
days+=365; //若是平年,天數加365
}
if((year%4==0)&&(year%100!=0)||(year%400==0))
month[1]=29; //若是輸入的年份為閏年,2月的天數設為29天
for(k=0;k<12;k++) //製作1~12月的月曆輸出
{
printf("\n\n\n %2d月\n\n",k+1);
if(k!=0)
days+=month[k-1]; //若不是在一月,天數加到當月之前的總天數
printf("日 一 二 三 四 五 六\n");
week=days+1; //計算當月第一天落在禮拜幾
for(m=0;m<(week%7);m++)
printf(" ");
//取餘數之值若為0,則為禮拜日,不需移位!其餘的值依序為禮拜一,二,三,...,六!
//再根據禮拜幾去移動幾個單位空格以做排列修正!
for(n=1;n<=month[k];n++)
{
printf("%2d ",n); //依序從當月的第一天輸出至最後一天
if((days+n)%7==6)
printf("\n"); //若是禮拜六輸出之後,換到下一行
}
}
printf("\n\n");
}
程式已經寫出來了...
但是想請問幾個問題:
1.請問要輸入年月之後印出當月日曆...要怎樣寫??
(就是先印出12個月的月曆之後再輸入年月...在印出日曆)
2.請問西元跟民國有差嗎??
是不是民國初年=西元1911年??
3.若是加入輸入年月日
可以使用年月日查詢星期
請問那要怎麼寫啊??
|