1、輸入一個年、月、日並計算它是本年度第幾天
2、輸入任何一年份,給出該年出生人的屬性,如1945年出生人的屬性爲“雞”
3、顯示輸入2000-2099年的任何一年的某一月的月曆,如下圖
problem1
#include <iostream>
using namespace std;
int main()
{
int year, month, day, num;
bool runnian; //是否爲閏年標誌位
cout << "請輸入一個年份:";
cin >> year;
cout << "請輸入月份:";
cin >> month;
cout << "請輸入日期:";
cin >> day;
if (year % 100 == 0)
{
if (year % 400 == 0)
runnian = true;
else
runnian = false;
}
else
{
if (year % 4 == 0)
{
runnian = true;
}
else
runnian = false;
}
switch (month)
{
case 1: num = day; break;
case 2: num = 31 + day; break;
case 3: num = 59 + day; break;
case 4: num = 90 + day; break;
case 5: num = 120 + day; break;
case 6: num = 151 + day; break;
case 7: num = 182 + day; break;
case 8: num = 212 + day; break;
case 9: num = 243 + day; break;
case 10: num = 274 + day; break;
case 11: num = 304 + day; break;
case 12: num = 335 + day; break;
default: break;
}
if (month >= 3)
{
if (runnian == true)
num++;
}
cout << "這是這一年的第" << num << "天";
return 0;
}
problem 2
#include <iostream>
using namespace std;
int main()
{
char p[12][4] = { "鼠","牛","虎","兔","龍","蛇","馬","羊","雞","猴","狗","豬" };
int year0 = 2008; //2008年是鼠年,作爲基準
int year, n;
cout << "請輸入一個年份";
cin >> year;
n = year - year0;
n = n % 12;
if (n < 0)
n += 12; //求餘時,n可能是負數,如果是負數則加12
cout << year << "年的人屬相爲:" << p[n];
return 0;
}
problem3
#include <iostream>
using namespace std;
int year, month, day, he;
int run[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int ping[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//這點到基本點的求和
//判斷閏年和平年
int leap(int year)
{
int four, hundred, fourhundred;
four = year % 4;
hundred = year % 100;
fourhundred = year % 400;
if (four == 0 && hundred == 0 && fourhundred == 0)
return 1;
else if (four == 0 && hundred != 0 && fourhundred != 0)
return 1;
else return 0;
}
int qiuhe(int year, int month, int day, int run[], int ping[])
{
//19000101 星期一
int i, sum = 0;
for (i = 1900; i < year; i++)
{
int m;//用來標籤是閏年還是平年 m==1,就是閏年
m = leap(i);
if (m == 1)
{
sum = sum + 366;
}
else
{
sum = sum + 365;
}
}
//加月份的天數
for (i = 0; i < month - 1; i++)
{
if (leap(year) == 1)
sum = sum + run[i];
else
sum = sum + ping[i];
}
return sum;
}
void muban()
{
char weekday[7][10] = { "星期一\t","星期二\t","星期三\t","星期四\t","星期五\t","星期六\t","星期天" };
int i;
for (i = 0; i < 7; i++)
cout << weekday[i];
cout << endl;
}
void shibiePrint(int sum, int year, int month)
{
int yushu, temp, i;
yushu = sum % 7;//得到多餘的天數,然後在後一個月份用空格表示出來
for (i = 0; i < yushu; i++)
cout << "\t";//輸出空格
temp = 7 - yushu;
if (leap(year) == 1)
{
for (i = 1; i <= run[month - 1]; i++)//打印31天
{
cout << i<< "\t";
if (i == temp || (i - temp) % 7 == 0)
cout << endl;
}
cout << endl;
}
else
{
for (i = 1; i <= ping[month - 1]; i++)//打印30天
{
cout << i << "\t";
if (i == temp || (i - temp) % 7 == 0)
cout << endl;
}
cout << endl;
}
}
int main()
{
cout << "請輸入一個年份";
cin >> year;
cout << "請輸入月份";
cin >> month;
cout << "請輸入日期";
cin >> day;
he = qiuhe(year, month, day, run, ping);//調用函數求和
cout << "\t\t\t"<< year<<"年"<<month<<"月\n\n";
muban();//調用模板函數,輸出模板
shibiePrint(he, year, month);//進行相應的識別,並輸出
return 0;
}