Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 20th, 2012  |  syntax: None  |  size: 2.96 KB  |  hits: 6  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. //以輸入的年、月、日、星期為基準,輸出當月的日曆
  2. #include <iostream>
  3. #include <iomanip>
  4. using namespace std;
  5. int year1(int);        //宣告判斷閏年的函式
  6. int main()
  7. {
  8.     int year,month,day,week,day1,week1,day2[31];
  9.     cout<<"請依序輸入年、月、日、星期\n" ;
  10.     cin>>year>>month>>day>>week;
  11.     switch (month)                        //輸出年、月,並計算總天數
  12.     {
  13.         case 1:
  14.              cout<<year<<" January\n";
  15.              day1=31;
  16.              break;
  17.         case 3:
  18.              cout<<year<<" March\n";
  19.              day1=31;
  20.              break;
  21.         case 4:
  22.              cout<<year<<" April\n";
  23.              day1=30;
  24.              break;
  25.         case 5:
  26.              cout<<year<<" May\n";
  27.              day1=31;
  28.              break;
  29.         case 6:
  30.              cout<<year<<" June\n";
  31.              day1=30;
  32.              break;
  33.         case 7:
  34.              cout<<year<<" July\n";
  35.              day1=31;
  36.              break;
  37.         case 8:
  38.              cout<<year<<" August\n";
  39.              day1=31;
  40.              break;
  41.         case 9:
  42.              cout<<year<<" September\n";
  43.              day1=30;
  44.              break;
  45.         case 10:
  46.              cout<<year<<" October\n";
  47.              day1=31;
  48.              break;
  49.         case 11:
  50.              cout<<year<<" November\n";
  51.              day1=30;
  52.              break;
  53.         case 12:
  54.              cout<<year<<" December\n";
  55.              day1=31;
  56.              break;
  57.         default:
  58.              cout<<year<<" February\n";
  59.              day1=year1(year);            //呼叫函式
  60.              break;
  61.     }
  62.     cout<<setw(4)<<"SUN"<<setw(4)<<"MON"<<setw(4)<<"TUE"<<setw(4)<<"WED"<<setw(4)<<"THU"<<setw(4)<<"FRI"<<setw(4)<<" SAT\n";
  63.     week1=week-(day%7-1);           //計算1號是星期幾
  64.     if (week1<0)
  65.     {
  66.         week1+=7;                
  67.     }
  68.     for (int a=0,b=1;a<31;a++,b++)            //讓每天都有一個變數代表
  69.     {
  70.         day2[a]=b;
  71.     }
  72.     if (week1!=0)                        
  73.     {
  74.         for (int i=1;i<=week1;i++)           //若1號不是星期一,需保留空格  
  75.         {
  76.              cout<<setw(4)<<" ";
  77.         }
  78.         cout<<setw(4)<<day2[0];        
  79.     }
  80.     for (int i=2,a=1,week2=week1+1;i<=day1;i++,a++,week2++)     //輸出其餘日期
  81.     {
  82.         if (week2>6)                           //超過7天要換行
  83.         {
  84.             week2-=8;
  85.             i--;
  86.             a--;
  87.             cout<<endl;
  88.             continue;        
  89.         }
  90.         cout<<setw(4)<<day2[a];      
  91.     }
  92.     cout<<endl;
  93.     system("pause");
  94.     return 0;
  95. }
  96. int year1(int year)         //判斷閏年函式
  97. {
  98.     if (year%400==0)
  99.     {
  100.         return 29;                              
  101.     }
  102.     else if (year%100==0)
  103.     {
  104.          return 28;
  105.     }
  106.     else if (year%4==0)
  107.     {
  108.          return 29;
  109.     }
  110.     else
  111.     {
  112.          return 28;
  113.     }
  114. }