using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
string year, month, day, select;
int y, m, d, sel;
while (true)
{
Console.WriteLine("請輸入題號1~6來執行以下題目");
Console.WriteLine("第1題 阿姆斯壯數");
Console.WriteLine("第2題 判斷閏年");
Console.WriteLine("第3題 判斷天數");
Console.WriteLine("第4題 判斷星期幾");
Console.WriteLine("第5題 判斷日期是否合法");
Console.WriteLine("第6題 判斷日期相差天數");
Console.WriteLine("請輸入非1~6的數字來結束程式");
select=Console.ReadLine();
sel = int.Parse(select);
switch(sel)
{
case 1:
//第1題 阿姆斯壯數
int a = 0;
int b = 0;
int c = 0;
double sum = 0;
Console.WriteLine("顯示100~999間的阿姆斯壯數");
for (int i = 100; i <= 999; i++)
{
a = i / 100;
b = i / 10 % 10;
c = i % 10;
sum = Math.Pow((double)a, 3) + Math.Pow((double)b, 3) + Math.Pow((double)c, 3);
if (sum == i)
Console.WriteLine("{0}", i);
}
Console.ReadKey();
Console.Clear();
break;
case 2:
//第2題 判斷閏年
Console.WriteLine("請輸入年分");
year = Console.ReadLine();
y = int.Parse(year);
if (y % 4 == 0 && y % 100 != 0)
Console.WriteLine("{0}年是閏年", y);
else if (y % 400 == 0)
Console.WriteLine("{0}年是閏年", y);
else
Console.WriteLine("{0}這年不是閏年", y);
Console.ReadKey();
Console.Clear();
break;
case 3:
//第3題 判斷天數
Console.WriteLine("請輸入年分");
year = Console.ReadLine();
y = int.Parse(year);
Console.WriteLine("請輸入月分");
month = Console.ReadLine();
m = int.Parse(month);
if (m > 12)
Console.WriteLine("這不是月份,呆呆!");
else if (m == 2)//閏年2月有29天
{
if (y % 4 == 0 && y % 100 != 0)
Console.WriteLine("{0}年的{1}月有29天", y, m);
else if (y % 400 == 0)
Console.WriteLine("{0}年的{1}月有29天", y, m);
else
Console.WriteLine("{0}年的{1}月有28天", y, m);
}
else if (m % 2 == 0 && m >= 8)
Console.WriteLine("這個月有31天");
else if (m % 2 == 1 && m <= 7)//基數月有31天
Console.WriteLine("這個月有31天");
else
Console.WriteLine("這個月有30天");
Console.ReadKey();
Console.Clear();
break;
case 4:
//第4題 判斷星期幾
Console.WriteLine("請輸入年分");
year = Console.ReadLine();
y = int.Parse(year);
Console.WriteLine("請輸入月分");
month = Console.ReadLine();
m = int.Parse(month);
Console.WriteLine("請輸入日期");
day = Console.ReadLine();
d = int.Parse(day);
int week;
//基姆拉爾森公式,需將1月和2月看成是上一年的13月和14月
if (m == 1 || m == 2)
{
m += 12;
y--;
}
week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400 + 1) % 7;
switch (week)
{
case 1:
Console.WriteLine("這天星期一");
break;
case 2:
Console.WriteLine("這天星期二");
break;
case 3:
Console.WriteLine("這天星期三");
break;
case 4:
Console.WriteLine("這天星期四");
break;
case 5:
Console.WriteLine("這天星期五");
break;
case 6:
Console.WriteLine("這天星期六");
break;
case 0:
Console.WriteLine("這天星期天");
break;
}
Console.ReadKey();
Console.Clear();
break;
case 5:
//第5題 判斷日期合法與否
Console.WriteLine("請輸入年分");
year = Console.ReadLine();
y = int.Parse(year);
Console.WriteLine("請輸入月分");
month = Console.ReadLine();
m = int.Parse(month);
Console.WriteLine("請輸入日期");
day = Console.ReadLine();
d = int.Parse(day);
if (d > 31||m>12)
Console.WriteLine("此日期不合法");
else if (d == 31 && m % 2 == 0)
{
if ((m == 8)||(m==10)||(m==12))
Console.WriteLine("此日期合法");
else
Console.WriteLine("此日期不合法");
}
else if (d >= 30 && m == 2)
Console.WriteLine("此日期不合法");
else if (d == 29&&m==2)
{
if (y % 4 == 0)
{
if (y % 100 == 0 && y % 400 != 0)
Console.WriteLine("此日期不合法");
else
Console.WriteLine("此日期合法");
}
else
Console.WriteLine("此日期不合法");
}
else
Console.WriteLine("此日期合法");
Console.ReadKey();
Console.Clear();
break;
case 6:
//第6題 判斷日期相差天數
int sumyear = 0;
int sum1=0, sum2=0;
int day1, day2;
int monthday;
int leapyear=0;
Console.WriteLine("請輸入第一個日期:範例:20150210");
int date1 = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入第二個日期:範例:20150416");
int date2 = int.Parse(Console.ReadLine());
int y1 = date1 / 10000;
int m1 = date1 % 10000 / 100;
int d1 = date1 % 100;
int y2 = date2 / 10000;
int m2 = date2 % 10000 / 100;
int d2 = date2 % 100;
for (day1 = 1; day1 < d1; day1++) ;
for (day2 = 1; day2 < d2; day2++) ;
//date1
if ((y1 % 4 == 0 && y1 % 100 != 0) || (y1 % 400 == 0))//潤
{
for (m = 1; m < m1; m++)
{
if (m == 2)
monthday = 29;
else if (m <= 8 && m % 2 == 1)
monthday = 31;
else if (m <= 8 && m % 2 == 0)
monthday = 30;
else if (m > 8 && m % 2 == 0)
monthday = 30;
else
monthday = 31;
sum1 = sum1+ monthday;
}
}
else
{
for (m = 1; m < m1; m++)
{
if (m == 2)
monthday = 28;
else if (m <= 8 && m % 2 == 1)
monthday = 31;
else if (m <= 8 && m % 2 == 0)
monthday = 30;
else if (m > 8 && m % 2 == 0)
monthday = 30;
else
monthday = 31;
sum1 = sum1 + monthday;
}
}
sum1 = sum1 + day1;
//date2
if ((y2 % 4 == 0 && y2 % 100 != 0) || (y2 % 400 == 0))//潤
{
for (m = 1; m < m2; m++)
{
if (m == 2)
monthday = 29;
else if (m <= 8 && m % 2 == 1)
monthday = 31;
else if (m <= 8 && m % 2 == 0)
monthday = 30;
else if (m > 8 && m % 2 == 0)
monthday = 30;
else
monthday = 31;
sum2 = sum2 + monthday;
}
}
else
{
for (m = 1; m < m2; m++)
{
if (m == 2)
monthday = 28;
else if (m <= 8 && m % 2 == 1)
monthday = 31;
else if (m <= 8 && m % 2 == 0)
monthday = 30;
else if (m > 8 && m % 2 == 0)
monthday = 30;
else
monthday = 31;
sum2 = sum2 + monthday;
}
}
sum2 = sum2 + day2;
//year
for (int i = y1; i < y2; i++)
{
if (i % 4 == 0 && i % 100 != 0)//潤
{
leapyear++;
}
else if (i % 400 == 0)
{
leapyear++;
}
else
sumyear++;
}
sumyear = sumyear * 365 + leapyear * 366;
Console.WriteLine("{0}天", sumyear - sum1 + sum2 - 1);
Console.ReadKey();
Console.Clear();
break;
default:
return ;
}
}
}
}
}
2015年3月18日 星期三
[2015][Homework]Team02 - Hw01
訂閱:
張貼留言 (Atom)
Console.ReadKey();
回覆刪除Console.Clear();
這兩行可以放在switch...case...外面,減少重複的程式碼.
作者已經移除這則留言。
刪除Get it!!
刪除
回覆刪除一行只有一個變數(12、13180、181):
可以減少變數
select=Console.ReadLine();
sel = int.Parse(select);
>>>>sel = int.Parse(Console.ReadLine());
第五題為判斷奇數月(11月31天為合法??)
命名使用Camel Case(179、182):
sumyear=>sumYear;
monthDay=>monthDay;
leapyear=>leapYear;
盡量使用有意義的字(181、188~193)
可以使用inputYear、finalYear、inputDayTotal
不要y1,m1....
註解:"閏"年,月"份"
Good!
刪除謝謝指教~~