#include <iostream>
using namespace std;





int main(int argc, char *argv[])
{

int i, j, l, y, m, d, w;
int b[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};



printf("請輸入年: ");
scanf("%d", &j);



y = j;
l = (y%4==0) && (y%100!=0) || (y%400==0);
y += y/4 - y/100 + y/400;
for (m=1; m<13; m++)
{ printf("\n%d年%4d月\n 日 一 二 三 四 五 六\n", j, m);
for (w=y, i=0; i<m; i++)
w += b[i];
if (l && m<3) w--;
w %= 7;
if (w) printf("%*s", w*3, " ");
for (i=1; i<=b[m]; i++)
{ printf("%3d", i);
if (++w == 7)
{ printf("\n");
w = 0;
}
}
if (w) printf("\n");
}
system("PAUSE");
return 0;
}
  • 2009-01-20 13:08:58 補充

    全部改成c++語法~~

    printf 等於 cout

    那其他的是??

 

answer:

/*解釋一些...其他邏輯思考...就沒得解釋...因為都一樣,只要你思考清晰就ok*/
#include "stdafx.h" //這是我用visual c++所以要引入之標頭檔
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

int i, j, l, y, m, d, w; //宣告七個變數
int b[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/*宣告陣列{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
共13個 陣列索引是從0開始*/


//printf("請輸入年: ");
cout<<"請輸入年: "; //這裡不多說
//scanf("%d", &j);
cin>>j;


y = j; //指定給y

l = (y%4==0) && (y%100!=0) || (y%400==0); //計算結果在經過true/false指定給l

y += y/4 - y/100 + y/400; //計算

for (m=1; m<13; m++) //迴圈m初值設為1

{
//printf("\n%d年%4d月\n 日 一 二 三 四 五 六\n", j, m);
cout<<j<<"年"<<m<<"月\n"<<"日 一 二 三 四 五 六\n";//不多說
for (w=y, i=0; i<m; i++) //迴圈y指定給w,i設為0
{

w += b[i]; //i=0,b[0]...在指定給w...累加...i=1,b[1]
}
if (l && m<3) //l and m<3...如true...才執行w--
{

w--;
}
w %= 7; //上面false...

if (w)
{
printf("%*s", w*3, " "); //不多說

}

for (i=1; i<=b[m]; i++) //這裡跟上面迴圈一樣

{
printf("%3d", i);


if (++w == 7)


{
printf("\n"); //這裡也一樣cout,下面跟上面都一樣

w = 0;

}

}

if (w)
{
printf("\n");
}



}
return 0;
}

參考資料 me

 

arrow
arrow
    全站熱搜

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