2015年3月19日 星期四

[2015][Homework]Team01 - Hw01



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HW1
{
    class Program
    {
        static void Main(string[] args)
        {
            //問題1
            int Arms_num, s;
            Console.WriteLine("1.阿姆斯壯數(100~999):");
            for (Arms_num = 100; Arms_num <= 999; Arms_num++)
            {
                s = (Arms_num / 100) * (Arms_num / 100) * (Arms_num / 100);
                s = s + (Arms_num / 10 % 10) * (Arms_num / 10 % 10) * (Arms_num / 10 % 10);
                s = s + (Arms_num % 10) * (Arms_num % 10) * (Arms_num % 10);
                if (Arms_num == s)
                    Console.WriteLine("{0}", Arms_num);
            }

            Console.Read();
            
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //問題2
            int year;
            Console.WriteLine("2.");
            Console.WriteLine("輸入西元年:");
            year = int.Parse(Console.ReadLine());
            if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
                Console.WriteLine("西元{0}年是閏年", year);
            else
                Console.WriteLine("西元{0}年是平年", year);

            Console.Read();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Homework1_3
{
    class Program
    {
        static void Main(string[] args)
        {
            //問題3
            int year,mon;
            string input;

            Console.WriteLine("請輸入年份");
            input = Console.ReadLine();
            year = int.Parse(input);
            Console.WriteLine("請輸入月份");
            input = Console.ReadLine();
            mon = int.Parse(input);
            if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
            {
                if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12)
                    Console.WriteLine("{0}年{1}月有31天", year, mon);
                else if (mon == 2)
                    Console.WriteLine("{0}年{1}月有29天", year, mon);
                else
                    Console.WriteLine("{0}年{1}月有30天", year, mon);
            }
            else 
            {
                if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12)
                    Console.WriteLine("{0}年{1}月有31天", year, mon);
                else if (mon == 2)
                    Console.WriteLine("{0}年{1}月有28天", year, mon);
                else
                    Console.WriteLine("{0}年{1}月有30天", year, mon);
            }
            Console.Read();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Homework1_4
{
    class part4
    {
        static void Main(string[] args)
        {
            //問題4
            int year, mon, day, week;
            string input;

            Console.WriteLine("請輸入年份");
            input = Console.ReadLine();
            year = int.Parse(input);
            Console.WriteLine("請輸入月份");
            input = Console.ReadLine();
            mon = int.Parse(input);
            Console.WriteLine("請輸入日期");
            input = Console.ReadLine();
            day = int.Parse(input);

            if (mon == 1 || mon == 2)
            {
                year--;
                mon += 12;
            }
            week = (day + 1 + 2 * mon + 3 * (mon + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
            switch (week)
            {
                case 0:
                    Console.WriteLine("為星期日");
                    break;
                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;
            }

            Console.Read();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HW1
{
    class Program
    {
        static void Main(string[] args)
        {

            //問題5
            int year, mon, day;

            Console.WriteLine("5.");
            Console.WriteLine("輸入西元年");
            year = int.Parse(Console.ReadLine());

            Console.WriteLine("輸入月份");
            mon = int.Parse(Console.ReadLine());

            Console.WriteLine("輸入日期");
            day = int.Parse(Console.ReadLine());

            if (mon > 12 || mon < 1)
                Console.WriteLine("false");
            else
            {
                switch (mon)
                {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        if (day > 31 || day <= 0)
                            Console.WriteLine("false");
                        else
                            Console.WriteLine("true");
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        if (day > 30 || day < 1)
                            Console.WriteLine("false");
                        else
                            Console.WriteLine("true");
                        break;
                    case 2:
                        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                        {
                            if (day > 29 || day < 1)
                                Console.WriteLine("false");
                            else
                                Console.WriteLine("true");
                        }
                        else
                        {
                            if (day > 28 || day < 1)
                                Console.WriteLine("false");
                            else
                                Console.WriteLine("true");
                        }
                        break;
                }
            }

            Console.Read();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HW1
{
    class Program
    {
        static void Main(string[] args)
        {

            //問題6
            int y2, m2, d2, y1, m1, d1, Day2 = 0, Day1 = 0;
            String s_y2, s_m2, s_d2, s_y1, s_m1, s_d1;

            Console.WriteLine("6.");

            ///
            /// 輸入結束的時間
            /// 

            Console.WriteLine("輸入結束時間:");
            Console.WriteLine("輸入西元年");
            s_y2 = Console.ReadLine();
            y2 = int.Parse(s_y2);

            Console.WriteLine("輸入月份");
            s_m2 = Console.ReadLine();
            m2 = int.Parse(s_m2);

            Console.WriteLine("輸入日期");
            s_d2 = Console.ReadLine();
            d2 = int.Parse(s_d2);
            Console.WriteLine();

            ///
            /// 輸入開始的時間
            /// 

            Console.WriteLine("輸入開始時間:");
            Console.WriteLine("輸入西元年");
            s_y1 = Console.ReadLine();
            y1 = int.Parse(s_y1);

            Console.WriteLine("輸入月份");
            s_m1 = Console.ReadLine();
            m1 = int.Parse(s_m1);

            Console.WriteLine("輸入日期");
            s_d1 = Console.ReadLine();
            d1 = int.Parse(s_d1);

            ///
            /// 計算結束的時間和西元前1年12月31日的時間差
            ///

            Day2 = (y2 - 1) * 365 + (y2 - 1) / 4 - (y2 - 1) / 100 + (y2 - 1) / 400;
            switch (m2)
            {
                case 1:
                    Day2 = Day2 + d2;
                    break;
                case 2:
                    Day2 = Day2 + 31 + d2;
                    break;
                case 3:
                    Day2 = Day2 + 31 + 28 + d2;
                    break;
                case 4:
                    Day2 = Day2 + 31 * 2 + 28 + d2;
                    break;
                case 5:
                    Day2 = Day2 + 31 * 2 + 28 + 30 + d2;
                    break;
                case 6:
                    Day2 = Day2 + 31 * 3 + 28 + 30 + d2;
                    break;
                case 7:
                    Day2 = Day2 + 31 * 3 + 28 + 30 * 2 + d2;
                    break;
                case 8:
                    Day2 = Day2 + 31 * 4 + 28 + 30 * 2 + d2;
                    break;
                case 9:
                    Day2 = Day2 + 31 * 5 + 28 + 30 * 2 + d2;
                    break;
                case 10:
                    Day2 = Day2 + 31 * 5 + 28 + 30 * 3 + d2;
                    break;
                case 11:
                    Day2 = Day2 + 31 * 6 + 28 + 30 * 3 + d2;
                    break;
                case 12:
                    Day2 = Day2 + 31 * 6 + 28 + 30 * 4 + d2;
                    break;
            }
            if ((y2 % 4 == 0 && y2 % 100 != 0 || y2 % 400 == 0) && m2 > 2)
                Day2 = Day2 + 1;

            ///
            /// 計算開始的時間和西元前1年12月31日的時間差
            ///

            Day1 = (y1 - 1) * 365 + (y1 - 1) / 4 - (y1 - 1) / 100 + (y1 - 1) / 400;
            switch (m1)
            {
                case 1:
                    Day1 = Day1 + d1;
                    break;
                case 2:
                    Day1 = Day1 + 31 + d1;
                    break;
                case 3:
                    Day1 = Day1 + 31 + 28 + d1;
                    break;
                case 4:
                    Day1 = Day1 + 31 * 2 + 28 + d1;
                    break;
                case 5:
                    Day1 = Day1 + 31 * 2 + 28 + 30 + d1;
                    break;
                case 6:
                    Day1 = Day1 + 31 * 3 + 28 + 30 + d1;
                    break;
                case 7:
                    Day1 = Day1 + 31 * 3 + 28 + 30 * 2 + d1;
                    break;
                case 8:
                    Day1 = Day1 + 31 * 4 + 28 + 30 * 2 + d1;
                    break;
                case 9:
                    Day1 = Day1 + 31 * 5 + 28 + 30 * 2 + d1;
                    break;
                case 10:
                    Day1 = Day1 + 31 * 5 + 28 + 30 * 3 + d1;
                    break;
                case 11:
                    Day1 = Day1 + 31 * 6 + 28 + 30 * 3 + d1;
                    break;
                case 12:
                    Day1 = Day1 + 31 * 6 + 28 + 30 * 4 + d1;
                    break;
            }
            if ((y1 % 4 == 0 && y1 % 100 != 0 || y1 % 400 == 0) && m1 > 2)
                Day1 = Day1 + 1;

            ///
            /// 印出所求的答案
            ///

            Console.WriteLine("開始日期和結束日期之間有{0}天", Day2 - Day1 - 1);

            Console.Read();
        }
    }
}

2 則留言:

  1. 第一題:
    (7) namespace命名:HW1 >> Homework1_1
    (14) 變數命名:Arms_num >> numArms
    s >> sum
    (18).(19).(20) 3次方可使用Math.Pow(value, power) BTW變數要改Double...
    (21) 條件式 if 單行也須使用大括號 { }

    第二題:
    (7) namespace命名:ConsoleApplication1 >> Homework1_2
    (15).(16) Console.WriteLine("2."); Console.WriteLine("輸入西元年:"); 可改用Console.WriteLine("2.\n輸入西元年:");
    (18).(20) 條件式 if.else 單行也須使用大括號 { }

    第三題:
    (13) 變數命名:mon >> month
    (22) 當條件較單一.多項時 可改用switch 版面較為簡約優雅
    (24).(26).(28).(33).(35).(37) 條件式 if.else if. else 單行也須使用大括號 { }

    第四題:
    (13) 變數命名:mon >> month

    第五題:
    (7) namespace命名:ConsoleApplication1 >> Homework1_2
    (15) 變數命名:mon >> month
    (27).(40).(42).(49).(51).(57).(59).(64).(66) 條件式 if.else if. else單行也須使用大括號 { }
    (40).(49) 條件判斷"建議"使用相同的條件運算子

    第六題:
    (7) namespace命名:ConsoleApplication1 >> Homework1_2
    (15) 變數命名y2 >> year2
    m2 >> month2
    d2 >> day2 ...(依此類推)
    (60).(107) 可改用較為smart的演算法 避免不通用的土法煉鋼法

    回覆刪除
    回覆
    1. 不可使用現成函數 請忽略
      (18).(19).(20) 3次方可使用Math.Pow(value, power) BTW變數要改Double...

      刪除