只要輸入 西元年分 、 月份 ,就可以輸出月曆喔~~
輸入「P」查閱上個月,輸入「N」查閱下個月
想要把這個程式帶回家玩的,[按這裡]

製作程式緣起:
主要...又是因為大學申請.............
我把上一個成績計算機的程式,交給學長看了之後
他說...你還太嫩了!

所以,我馬上決定寫個像樣的東西
又因為聽說很多人,至少都會寫個萬年曆
所以我就決定也寫個萬年曆

誰知道,說得容易,做難啊!
我一開始只會排一個畫面出來而已
根本沒有「引擎」,沒有計算萬年曆的公式

於是,我就觀察了「我家的萬年桌曆」.......
發現到每個月份都是有規律的
才得到靈感,完成這個程式

用這種觀察規律寫出來,其實算是偷吃步
公式就沒有很複雜
(我的數學很爛...要我寫出複雜的公式也不太可能..)
但是就是因為這樣的偷吃步
我的程式比學長的還要小........

另外
由於日光節約時間的關係
1900年之前的日子不能用這個程式算
因為我也不知道1900年之前到底是怎麼一回事...........




程式碼,有興趣的再看
#include <stdio.h>
#include <conio.h>

void main()
{
 clrscr();
 int a=0,b,c,d,s=1,m,g,extra,p;


//輸入年份和月份
printf("Year:");
 scanf("%d",&d);

 start:   //月份大於12就會跳來這裡

 printf("Month:");
 scanf("%d",&m);
//開始判斷月份是否大於12
 if(m>=13)
 goto start;
 s=d%4;

 clrscr();

 hello:

//顯示月份
printf("\n    A.D.%d   ",d);

 if(m==1)
//判斷這年是否為閏年,如果是閏年,起始日期減一天
  if(s==0)
   b=6,c=31,printf("January");
  else
   b=7,c=31,printf("January");

 else if(m==2)
//判斷這年是否為閏年,如果是閏年,起始日期減一天,並把日數改成29
  if(s==0)
   b=2,c=29,printf("February");
  else
   c=28,b=3,printf("February");

 else if(m==3)
 b=3,c=31,printf("March");

 else if(m==4)
 b=6,c=30,printf("April");

 else if(m==5)
 b=1,c=31,printf("May");

 else if(m==6)
 b=4,c=30,printf("Jane");

 else if(m==7)
 b=6,c=31,printf("July");

 else if(m==8)
 b=3,c=31,printf("August");

 else if(m==9)
 b=5,c=30,printf("September");

 else if(m==10)
 b=0,c=31,printf("October");

 else if(m==11)
 b=3,c=30,printf("November");

 else if(m==12)
 b=5,c=31,printf("December");

//處理輸入的年份,把要用的代數準備好
 extra=d-1;
 g=d/4;

 b+=g;
 b+=extra;

//取星期餘數,把起始日之前多餘的 7的倍數天去掉
  if(b>=7)
  {
  b=b%7;
  }

//程式要把日期排出來了!
 printf("\n\nSun Mon Tue Wed Thu Fri Sat\n");
  for(a=0;a<=b-1;a++)
  {
  printf("    ");
  }
  for(a=1;a<=c;a++)
  {
  if(a<=9)
  printf("  %d ",a);
  else
  printf(" %d ",a);
  b=b+1;
  if(b>=7)
  {
  printf("\n");
  b=0;
  }
  }
 printf("\n\nEnter P for Previous Month.\n\nEnter N for Next Month.");

 scanf("%s",&p);
 if(p=='p')
 m=m-1;
 if(p=='n')
 m=m+1;
 if(m==0)
 d=d-1,m=12;
 if(m==13)
 d=d+1,m=1;
 clrscr();
 goto hello;


 printf("\n\nThank you for using!! \n\nComposed by Meng-Luen Wu"),getch();
 }

arrow
arrow
    全站熱搜

    finalfrank 發表在 痞客邦 留言(0) 人氣()