namespace HW1
{
class Program
{
static void printArmstrongNumber()
{
int first, second, third,num;
for (int i = 100; i < 1000; i++)
{
first = i / 100;
second = i / 10 % 10;
third = i % 10;
num = first * first * first + second * second * second + third * third * third;
if (i == num)
Console.WriteLine(i);
}
}
static bool determineLeapYear(int year)//閏年 回傳True
{
if (((year % 400) == 0) || ((year % 4 == 0) && (year % 100 != 0)))
return true;
else return false;
}
static int countDayOfMonth(int year, int month)
{
if (month != 2)
{
int big = 1;
if (month <= 7)
{
if (month % 2 == 0) big = 0;
}
else
if (month % 2 == 1) big = 0;
if (big == 1) return 31;
else return 30;
}
else //2月
if (Program.determineLeapYear(year)) return 29;
else return 28;
}//回傳天數
static void findWeek(int year, int month, int day)
{
int Difference;
Difference = countDayBetweenOtherDay(1, 1, 1, year, month, day);
// Difference++;
if (Difference == -1) Console.WriteLine("星期1");
Difference = Difference % 7;
if (Difference == 0)
Console.WriteLine("星期2");
if (Difference == 1)
Console.WriteLine("星期3");
if (Difference == 2)
Console.WriteLine("星期4");
if (Difference == 3)
Console.WriteLine("星期5");
if (Difference == 4)
Console.WriteLine("星期6");
if (Difference == 5)
Console.WriteLine("星期天");
if (Difference == 6)
Console.WriteLine("星期1");
}
static bool determineDay(int year, int month, int day)//有效日期判斷
{
if ((month <= 12) && (month >= 1) && ((day <= countDayOfMonth(year, month)) && (day > 0))) return true;
else return false;
}
static int countDayBetweenOtherDay(int year, int month, int day, int year2, int month2, int day2)//回傳 兩日相差天數
{
int dayOffset = 0;//offset
for (int i = year2; i > year; i--)//年換算
{
if (determineLeapYear(i - 1))
dayOffset += 366;
else dayOffset += 365;
}
for (int i = month2; i > 1; i--)//月換算(轉成1/1)
dayOffset += countDayOfMonth(year2, i - 1);
for (int i = month; i > 1; i--)//月換算(轉成1/1)
dayOffset -= countDayOfMonth(year, i - 1);
return day2 + dayOffset -day - 1;
}
static void Main(string[] args)
{
string inputTemp;//input的暫存器
int choose;
int year;
int month;
int day;
int year2;
int month2;
int day2;
while(true)
{
#region input
Console.WriteLine("請輸入要測哪一題:");
inputTemp=Console.ReadLine();
choose = Convert.ToInt32(inputTemp);
#endregion
#region test1
if (choose == 1)
{
Console.WriteLine("請寫出可以列印出所有三位數(100~999)之『阿姆斯壯數』");
printArmstrongNumber();
}
#endregion
#region test2
else if (choose == 2)
{
Console.WriteLine("輸入西元年份,讓我幫你算算是不是閏年:");
inputTemp = Console.ReadLine();
year = Convert.ToInt32(inputTemp);
if (determineLeapYear(year)) Console.WriteLine("是閏年!");
else Console.WriteLine("是平年!");
}
#endregion
#region test3
else if (choose == 3)
{
Console.WriteLine("輸入西元年份及月份,讓我幫你算算該月有幾天:");
Console.WriteLine("請先輸入西元年份:");
inputTemp = Console.ReadLine();
year = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入月份:");
inputTemp = Console.ReadLine();
month = Convert.ToInt32(inputTemp);
Console.WriteLine(countDayOfMonth(year, month));
}
#endregion
#region test4
else if (choose == 4)
{
Console.WriteLine("輸入西元年份及月份和日期,讓我幫你算算是星期幾:");
Console.WriteLine("請先輸入西元年份:");
inputTemp = Console.ReadLine();
year = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入月份:");
inputTemp = Console.ReadLine();
month = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入日期:");
inputTemp = Console.ReadLine();
day = Convert.ToInt32(inputTemp);
findWeek(year, month, day);
}
#endregion
#region test5
else if (choose == 5)
{
Console.WriteLine("輸入西元年份及月份和日期,讓我幫你算算是不是合法日期:");
Console.WriteLine("請先輸入西元年份:");
inputTemp = Console.ReadLine();
year = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入月份:");
inputTemp = Console.ReadLine();
month = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入日期:");
inputTemp = Console.ReadLine();
day = Convert.ToInt32(inputTemp);
if (determineDay(year, month,day)) Console.WriteLine("合法!");
else
Console.WriteLine("不合法!");
}
#endregion
#region test6
else if (choose == 6)
{
Console.WriteLine("輸入兩個西元年份及月份和日期,讓我幫你算算總共差幾天:");
Console.WriteLine("請先輸入(起始)西元年份:");
inputTemp = Console.ReadLine();
year = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入(起始)月份:");
inputTemp = Console.ReadLine();
month = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入(起始)日期:");
inputTemp = Console.ReadLine();
day = Convert.ToInt32(inputTemp);
Console.WriteLine("請先輸入(結束)西元年份:");
inputTemp = Console.ReadLine();
year2 = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入(結束)月份:");
inputTemp = Console.ReadLine();
month2 = Convert.ToInt32(inputTemp);
Console.WriteLine("請輸入(結束)日期:");
inputTemp = Console.ReadLine();
day2 = Convert.ToInt32(inputTemp);
Console.WriteLine(countDayBetweenOtherDay(year, month, day, year2, month2, day2));
}
#endregion
else Console.WriteLine("不合法的輸入= =");
}
}
}
}
2015年3月26日 星期四
[2015][Homework]Team03 - Hw01 (Revised)
[2015][Homework]Team02 - Hw01 (Revised)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hw1
{
class Program
{
static void Main(string[] args)
{
int year;
int month;
int day;
int select;
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 = int.Parse(Console.ReadLine());
switch (select)
{
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);
}
break;
case 2:
//第2題 判斷閏年
Console.WriteLine("請輸入年分");
year = int.Parse(Console.ReadLine());
if (year % 4 == 0 && year % 100 != 0)
Console.WriteLine("{0}年是閏年", year);
else if (year % 400 == 0)
Console.WriteLine("{0}年是閏年", year);
else
Console.WriteLine("{0}這年不是閏年", year);
break;
case 3:
//第3題 判斷天數
Console.WriteLine("請輸入年分");
year = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入月分");
month = int.Parse(Console.ReadLine());
if (month > 12)
Console.WriteLine("這不是月份,呆呆!");
else if (month == 2)//閏年2月有29天
{
if (year % 4 == 0 && year % 100 != 0)
Console.WriteLine("{0}年的{1}月有29天", year, month);
else if (year % 400 == 0)
Console.WriteLine("{0}年的{1}月有29天", year, month);
else
Console.WriteLine("{0}年的{1}月有28天", year, month);
}
else if (month % 2 == 0 && month >= 8)
Console.WriteLine("這個月有31天");
else if (month % 2 == 1 && month <= 7)//基數月有31天
Console.WriteLine("這個月有31天");
else
Console.WriteLine("這個月有30天");
break;
case 4:
//第4題 判斷星期幾
Console.WriteLine("請輸入年分");
year = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入月分");
month = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入日期");
day = int.Parse(Console.ReadLine());
int week;
//基姆拉爾森公式,需將1月和2月看成是上一年的13月和14月
if (month == 1 || month == 2)
{
month += 12;
year--;
}
week = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 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;
}
break;
case 5:
//第5題 判斷日期合法與否
Console.WriteLine("請輸入年分");
year = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入月分");
month = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入日期");
day = int.Parse(Console.ReadLine());
if (day > 31 || month > 12)
Console.WriteLine("此日期不合法");
else if (day == 31 && month % 2 == 0)
{
if ((month == 8) || (month == 10) || (month == 12))
Console.WriteLine("此日期合法");
else
Console.WriteLine("此日期不合法");
}
else if (day == 31 && month % 2 == 1)
{
if ((month == 9) || (month == 11))
Console.WriteLine("此日期不合法");
else
Console.WriteLine("此日期合法");
}
else if (day >= 30 && month == 2)
Console.WriteLine("此日期不合法");
else if (day == 29 && month == 2)
{
if (year % 4 == 0)
{
if (year % 100 == 0 && year % 400 != 0)
Console.WriteLine("此日期不合法");
else
Console.WriteLine("此日期合法");
}
else
Console.WriteLine("此日期不合法");
}
else
Console.WriteLine("此日期合法");
break;
case 6:
//第6題 判斷日期相差天數
int sumYear = 0;
int sumDay1 = 0;
int sumDay2 = 0;
int day1;
int day2;
int monthDay;
int leapYear = 0;
Console.WriteLine("請輸入第一個日期:範例:20150210");
int inputDate1 = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入第二個日期:範例:20150416");
int inputDate2 = int.Parse(Console.ReadLine());
int inputYear1 = inputDate1 / 10000;
int inputMonth1 = inputDate1 % 10000 / 100;
int inputDay1 = inputDate1 % 100;
int inputYear2 = inputDate2 / 10000;
int inputMonth2 = inputDate2 % 10000 / 100;
int inputDay2 = inputDate2 % 100;
for (day1 = 1; day1 < inputDay1; day1++) ;
for (day2 = 1; day2 < inputDay2; day2++) ;
//date1
if ((inputYear1 % 4 == 0 && inputYear1 % 100 != 0) || (inputYear1 % 400 == 0))//潤
{
for (month = 1; month < inputMonth1; month++)
{
if (month == 2)
monthDay = 29;
else if (month <= 8 && month % 2 == 1)
monthDay = 31;
else if (month <= 8 && month % 2 == 0)
monthDay = 30;
else if (month > 8 && month % 2 == 0)
monthDay = 30;
else
monthDay = 31;
sumDay1 = sumDay1 + monthDay;
}
}
else
{
for (month = 1; month < inputMonth1; month++)
{
if (month == 2)
monthDay = 28;
else if (month <= 8 && month % 2 == 1)
monthDay = 31;
else if (month <= 8 && month % 2 == 0)
monthDay = 30;
else if (month > 8 && month % 2 == 0)
monthDay = 30;
else
monthDay = 31;
sumDay1 = sumDay1 + monthDay;
}
}
sumDay1 = sumDay1 + day1;
//date2
if ((inputYear2 % 4 == 0 && inputYear2 % 100 != 0) || (inputYear2 % 400 == 0))//潤
{
for (month = 1; month < inputMonth2; month++)
{
if (month == 2)
monthDay = 29;
else if (month <= 8 && month % 2 == 1)
monthDay = 31;
else if (month <= 8 && month % 2 == 0)
monthDay = 30;
else if (month > 8 && month % 2 == 0)
monthDay = 30;
else
monthDay = 31;
sumDay2 = sumDay2 + monthDay;
}
}
else
{
for (month = 1; month < inputMonth2; month++)
{
if (month == 2)
monthDay = 28;
else if (month <= 8 && month % 2 == 1)
monthDay = 31;
else if (month <= 8 && month % 2 == 0)
monthDay = 30;
else if (month > 8 && month % 2 == 0)
monthDay = 30;
else
monthDay = 31;
sumDay2 = sumDay2 + monthDay;
}
}
sumDay2 = sumDay2 + day2;
//year
for (year = inputYear1; year < inputYear2; year++)
{
if (year % 4 == 0 && year % 100 != 0)//潤
{
leapYear++;
}
else if (year % 400 == 0)
{
leapYear++;
}
else
sumYear++;
}
sumYear = sumYear * 365 + leapYear * 366;
Console.WriteLine("{0}天", sumYear - sumDay1 + sumDay2 - 1);
break;
default:
return;
}
Console.ReadKey();
Console.Clear();
}
}
}
}
2015年3月25日 星期三
[2015][Homework]Team05 - Hw01 (Revised)
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _40173007H_hw3
{
class Program
{
static void Main(string[] args)
{
string select;
int y, m, d, sel;
while (1 == 1)
{
Console.WriteLine("輸入1~6題號");
Console.WriteLine("輸入其他數字以結束程式");
select = Console.ReadLine();
sel = int.Parse(select);
switch (sel)
{
case (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 % 10;
b = i / 10 % 10;
c = i / 100 % 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):
//第二題 判斷閏年
Console.WriteLine("輸入年分");
y = int.Parse(Console.ReadLine());
if (y % 4 == 0 && y % 100 != 0)
Console.WriteLine("這年是閏年");
else if (y % 400 == 0)
Console.WriteLine("這年是閏年");
else
Console.WriteLine("這年不是閏年");
Console.ReadKey();
Console.Clear();
break;
case (3):
//第三題 判斷天數
Console.WriteLine("輸入年分");
y = int.Parse(Console.ReadLine());
Console.WriteLine("輸入月分");
m = int.Parse(Console.ReadLine());
if (m > 12)
Console.WriteLine("這不是月份!");
else if (m == 2)
if (y % 4 == 0)
Console.WriteLine("這個月有29天");
else
Console.WriteLine("這個月有28天");
else if (m % 2 == 1 || m == 8)
Console.WriteLine("這個月有31天");
else
Console.WriteLine("這個月有30天");
Console.ReadKey();
Console.Clear();
break;
case (4):
//第四題 判斷星期幾
Console.WriteLine("輸入年分");
y = int.Parse(Console.ReadLine());
Console.WriteLine("輸入月分");
m = int.Parse(Console.ReadLine());
Console.WriteLine("輸入日期");
d = int.Parse(Console.ReadLine());
int W;
if (m == 1)
{
y = y - 1;
m = 13;
}
else if (m == 2)
{
y = y - 1;
m = 14;
}
W = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400 + 1) % 7;
switch (W)
{
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):
//第五題 判斷日期合法與否
Console.WriteLine("輸入年分");
y = int.Parse(Console.ReadLine());
Console.WriteLine("輸入月分");
m = int.Parse(Console.ReadLine());
Console.WriteLine("輸入日期");
d = int.Parse(Console.ReadLine());
if (d > 31)
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)
{
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):
//第六題 判斷日期相差天數
int totalDay1 = 0, totalDay2 = 0, diff = 0, leaps, tempsum;
for (int times = 1; times < 3; times++)
{
Console.WriteLine("輸入第{0}次年分", times);
y = int.Parse(Console.ReadLine());
Console.WriteLine("輸入第{0}次月分", times);
m = int.Parse(Console.ReadLine());
Console.WriteLine("輸入第{0}次日期", times);
d = int.Parse(Console.ReadLine());
leaps = y / 4 - y / 100 + y / 400;
switch (m)
{
case (1):
tempsum = (y * 365 + leaps) + d;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (2):
tempsum = (y * 365 + leaps) + 31 + d;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (3):
tempsum = (y * 365 + leaps) + 59 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (4):
tempsum = (y * 365 + leaps) + 90 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (5):
tempsum = (y * 365 + leaps) + 120 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (6):
tempsum = (y * 365 + leaps) + 151 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (7):
tempsum = (y * 365 + leaps) + 181 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (8):
tempsum = (y * 365 + leaps) + 212 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (9):
tempsum = (y * 365 + leaps) + 243 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (10):
tempsum = (y * 365 + leaps) + 273 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (11):
tempsum = (y * 365 + leaps) + 304 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
case (12):
tempsum = (y * 365 + leaps) + 334 + d;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
tempsum = tempsum + 1;
totalDay1 = totalDay2;
totalDay2 = tempsum;
break;
}
}
diff = totalDay1 - totalDay2;
if (diff < 0)
Console.WriteLine("此兩日相差{0}天", -(diff - 1));
else
Console.WriteLine("此兩日相差{0}天", diff - 1);
Console.ReadKey();
Console.Clear();
break;
default:
return;
}
}
}
}
}
2015年3月23日 星期一
2015年3月19日 星期四
訂閱:
文章 (Atom)