瀏覽單個文章
DEVON1224
Junior Member
 

加入日期: Jul 2004
文章: 747
請問C++的萬年曆程式...

#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.若是加入輸入年月日
 可以使用年月日查詢星期
 請問那要怎麼寫啊??
     
      
舊 2005-01-04, 05:42 PM #1
回應時引用此文章
DEVON1224離線中