PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

回應
 
主題工具
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:50 PM 被 DEVON1224 編輯.
舊 2005-01-04, 05:42 PM #1
回應時引用此文章
DEVON1224離線中  
a_ei
*停權中*
 

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

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

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

}
// ===================================================
提供一個想法,給你參考一下.太難的我就不會了.
 
舊 2005-01-04, 05:59 PM #2
回應時引用此文章
a_ei離線中  
crazyjack
Basic Member
 
crazyjack的大頭照
 

加入日期: Aug 2003
您的住址: 洛杉磯
文章: 19
曆法在歷史上有幾次改變...
你這個有點小錯
舊 2005-01-05, 12:27 AM #3
回應時引用此文章
crazyjack離線中  
魔師傲神州
Major Member
 

加入日期: Sep 2003
您的住址: 台北汐止
文章: 174
這個語法是C語言吧??
舊 2005-01-05, 02:46 AM #4
回應時引用此文章
魔師傲神州離線中  
DEVON1224
Junior Member
 

加入日期: Jul 2004
文章: 747
引用:
作者crazyjack
曆法在歷史上有幾次改變...
你這個有點小錯

請問是哪裡有錯呢??
舊 2005-01-05, 07:44 AM #5
回應時引用此文章
DEVON1224離線中  
ahdeng
Junior Member
 
ahdeng的大頭照
 

加入日期: Aug 2002
您的住址: 「天龍國」
文章: 795
台灣老師好像不太注重變數名稱,建議變數使用大寫方便閱讀!
1.現在不就是印出來了嗎?
2.民國=西元-1911
3.你在「week=days+1; //計算當月第一天落在禮拜幾」判斷,這不就是你的答案了嗎?
__________________
「千金難買早知道,萬般無奈想不到。」
舊 2005-01-05, 08:49 AM #6
回應時引用此文章
ahdeng離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



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


vBulletin Version 3.0.1
powered_by_vbulletin 2025。