PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   請問C++的萬年曆程式... (https://www.pcdvd.com.tw/showthread.php?t=431623)

DEVON1224 2005-01-04 05:42 PM

請問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.若是加入輸入年月日
 可以使用年月日查詢星期
 請問那要怎麼寫啊??

a_ei 2005-01-04 05:59 PM

我想,先印出一個功能表單,然後讓使用者選擇要做哪個功能.
然後去做使用者要求的功能,否則在(非有效的選項或離開功能)自動離開程式.
我的想法:

// ==============================================
//程式開始
main()
{
印出功能表

while(1)
{
列印字串,要求使用者輸入要做哪個功能.
等待使用者輸入
switch(使用者要做的功能)
{
case 0: 做印出哪一年的年月的日曆 break;
case 1: 做印出哪一年月日是星期幾 break;
case 2:
default: return 0; // 做離開的動作.
}
}

}
// ===================================================
提供一個想法,給你參考一下.太難的我就不會了. :D

crazyjack 2005-01-05 12:27 AM

曆法在歷史上有幾次改變...
你這個有點小錯 :p

魔師傲神州 2005-01-05 02:46 AM

這個語法是C語言吧??

DEVON1224 2005-01-05 07:44 AM

引用:
作者crazyjack
曆法在歷史上有幾次改變...
你這個有點小錯 :p

請問是哪裡有錯呢??

ahdeng 2005-01-05 08:49 AM

台灣老師好像不太注重變數名稱,建議變數使用大寫方便閱讀!
1.現在不就是印出來了嗎?
2.民國=西元-1911
3.你在「week=days+1; //計算當月第一天落在禮拜幾」判斷,這不就是你的答案了嗎?


所有的時間均為GMT +8。 現在的時間是10:12 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。