2020-10-30

花若一瞬間發表於2020-10-30

C#程式設計習題_1(西安交通大學)

一、week 2

1.從鍵盤分別輸入兩個不為0的整數(前2行輸入),分別輸出這兩個整數的和 差 積 商。

樣例:

2

3

5 -1 6 0

using System;
namespace week2_hom1
{
    class Program
    {
        static void Main(string[] args)
        {
            string a1 = Console.ReadLine();
            string b1 = Console.ReadLine();
            int a = Convert.ToInt32(a1);
            int b = Convert.ToInt32(b1);
            int f_1 = a + b;
            int f_2 = a - b;
            int f_3 = a * b;
            int f_4 = a / b;
            Console.WriteLine("{0} {1} {2} {3}", f_1, f_2, f_3, f_4);
        }
    }
}

2.輸入表示時間的整數,單位是秒。輸出小時秒。

如果時間單位前的數值是0,則不輸出該時間單位的數值。

樣例:
3610
1小時10秒

using System;

namespace week1_hom2
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = Console.ReadLine();
            int t_s = Convert.ToInt32(a);
            int seconds= t_s % 60;
            int minutes = (t_s / 60) % 60;
            int hours = ((t_s / 60) / 60) % 24;
            int days = (t_s / 60) / 60 / 24;
            if(days!=0)
            {
                Console.Write("{0}天", days);
            }
            if (hours != 0)
            {
                Console.Write("{0}小時", hours);
            }
            if(minutes!=0)
            {
                Console.Write("{0}分", minutes);
            }
            if(seconds!=0)
            {
                Console.Write("{0}秒",seconds);
            }
            
            

        }
    }
}

3.對於一個4位整數(從0000-9999)按如下方式加密:將每位數字加7後對10取餘,用餘數替換原來的數字;然後將1,3位數字互換;2,4位數字互換。

輸入一個4位數,輸出加密後的結果。

樣例:

5493

6021

如果時間單位前的數值是0,則不輸出該時間單位的數值。

樣例:
3610
1小時10秒

using System;
namespace week1_hom3
{
    class Program
    {
        static void Main(string[] args)
        {
            string a=Console.ReadLine();
            int b = Convert.ToInt32(a);
            int n_1,n_2,n_3,n_4;
            n_4 = (b%10+7)%10;
            n_3 = ((b%100)/10+7)%10;
            n_2 = ((b%1000)/100+7)%10;
            n_1 = (b/1000+7)%10;
            int final = n_3 * 1000 + n_4 * 100 + n_1 * 10 + n_2;
            Console.Write(final);      
        }
    }
}

4。輸入一個字串,按照樣例格式輸出。

樣例:

Alice

Hi Alice,

Welcome to C# 2020!

using System;

namespace week1_hom4
{
    class Program
    {
        static void Main(string[] args)
        {
            string name=Console.ReadLine();
            Console.Write("Hi {0},\r\nWelcome to C# 2020!\r\n\r\nBest wishes!",name);
        }
    }
}

5.輸入一個字母,如果它是小寫字母則輸出它的大寫字母,如果它是大寫字母輸出它的小寫字母。

樣例1:

A

a

樣例2:

b

B

using System;

namespace week1_hom5
{
    class Program
    {
        static void Main(string[] args)
        {
            string x =Console.ReadLine();
            char[] a = x.ToCharArray();
            int a_n = (int)a[0];
            if(a_n<91)
            {
                a_n = a_n + 32;
                Console.WriteLine((char)a_n);
            }
            else
            {
                a_n = a_n - 32;
                Console.WriteLine((char)a_n);
            }
        }
    }
}

二、week 3

1.在一行內輸入5個整數,空格分隔。輸出5個整數,逗號分隔。英文符號。

using System;

namespace week2_hom2
{
    class Program
    {
        static void Main(string[] args)
        {
            string a=Console.ReadLine();
            string[] b = a.Split(' ');
            for(int i=0;i<4; i++)
            {
                int k = Convert.ToInt32(b[i]);
                Console.Write(k);
                Console.Write(",");
            }
            int o = Convert.ToInt32(b[4]);
            Console.Write(o);
        }
    }
}


2定義一個三角型類,具有3個public的欄位(double)為三角形的3邊的長度。提供2個public的方法:

bool IsTriAngle()判斷這3邊能否構成一個三角形;
double Area() 求三角形的面積(如果不能構成三角形,返回值為-1)

輸入三角形的3條邊,用空格分隔。如果能構成三角形,直接輸出三角形面積;否則輸出-1

using System;

namespace week2_hom1
{
    class Program
    {
        static void Main(string[] args)
        {
            string intt = Console.ReadLine();
            string[] intt_1 = intt.Split(' ');
            double a1 = Convert.ToDouble(intt_1[0]);
            double a2 = Convert.ToDouble(intt_1[1]);
            double a3 = Convert.ToDouble(intt_1[2]);
            tri s = new tri();
            bool de=s.IsTriAngle(a1, a2, a3);
            if(de==true)
            {
                double ss = s.Area(a1, a2, a3);
                Console.WriteLine(ss);
            }
            else
            {
                Console.WriteLine(-1);
            }
        }
    }
    class tri
    {
        public bool IsTriAngle(double a,double b,double c)
        {
            if(a + b > c && a + c > b && b + c > a)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public double Area(double a,double b,double c)
        {
            double k = (a + b + c) / 2;
            double s1 = Math.Pow(k * (k - a) * (k - b) * (k - c), 0.5);
            return s1;
        }
    }
}

3.建立一個Date類,要求能輸入以下格式的日期:

第一種:MM/YYYY 建構函式接收2個整數
第二種:June,1992 建構函式接收一個字串和一個整數

當使用者輸入其出生年月日時,能夠計算出使用者的年齡(到年即可。向下取整)。當使用者輸入的日期無意義或未來時間,輸出invalid。(當前時間取系統時間,請查C#自帶的取時間的函式)

using System;

namespace week2_hom3
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = Convert.ToInt32(DateTime.Now.Year.ToString());
            int b = Convert.ToInt32(DateTime.Now.Month.ToString());
            string inp = Console.ReadLine();
            Date us = new Date();
            int len_1 = inp.Split(new char[] { '/' }).Length;
            int len_2 = inp.Split(new char[] { ',' }).Length;
            if (len_1 == 2)
            {
                us.Firsttype(inp, a, b);
            }
            else
            {
                if (len_2 == 2)
                {
                    us.Secondtype(inp, a, b);
                }
                else
                {
                    Console.WriteLine("invalid");
                }
            }
        }
    }
    class Date
    {
        public void Firsttype(string a, int year, int month)
        {
            string[] asp = a.Split(new char[] { '/'});
            int yearb = Convert.ToInt32(asp[1]);
            int monthb = Convert.ToInt32(asp[0]);
            int syear = year - yearb;
            int smonth = month - monthb;
            if (monthb < 0 || monthb > 12)
            {
                Console.WriteLine("invalid");
            }
            else
            {
                if (syear < 0)
                {
                    Console.WriteLine("invalid");
                }
                else
                {
                    if (smonth < 0)
                    {
                        int age = syear - 1;
                        string age_1 = Convert.ToString(age);
                        Console.WriteLine("{0}歲", age_1);
                    }
                    else
                    {
                        int age = syear;
                        string age_1 = Convert.ToString(age);
                        Console.WriteLine("{0}歲", age_1);
                    }
                }
            }

        }
        public void Secondtype(string a, int year, int month)
        {
            string[] month_t = new string[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
            string[] asp = a.Split(new char[]{ ',' });
            string month_1 = asp[0];
            int year_1 = Convert.ToInt32(asp[1]);
            int syear = year - year_1;
            int i;
            for (i = 0; i < 12; i++)
            {
                if (month_1 == month_t[i])
                {
                    break;
                }
                else
                {
                    continue;
                }
            }
            if (i < 11)
            {
                int smonth = month - (i + 1);
                if (syear < 0)
                {
                    Console.WriteLine("invalid");
                }
                else
                {
                    if (smonth < 0)
                    {
                        int age = syear - 1;
                        Console.WriteLine("{0}歲", age);
                    }
                    else
                    {
                        Console.WriteLine("{0}歲", syear);
                    }
                }
            }
            else
            {
                Console.WriteLine("invalid");

            }
        }
    }
}

4.運動時,可以利用心率監測儀來檢視心率是否處於安全範圍內。其中最高心率=220-年齡;目標心率是最高心率的50%-85%(向下取整);

建立一個名稱為HeartRates的類。這個類的的屬性應該包含人的姓名、出生年份和當前年份。

類中還包含一個計算並返回年齡(以整年計算)的屬性;一個計算並返回最高心率分方法;以及2個分別計算最低和最高目標心率的方法;

編寫程式,例項化HeartRates類,輸入個人姓名,出生年月日(空格分隔)。並輸出物件的資訊,包括姓名,出生年份;年齡;最高心率,最低目標心率,最高目標心率(空格分隔)

using System;
namespace week2_hom4
{
    class Program
    {
        static void Main(string[] args)
        {
            string a=Console.ReadLine();
            string[] a_1 = a.Split();
            string[] a_2 = a_1[1].Split(new char[] { '/'});
            int year = Convert.ToInt32(a_2[0]);
            HeartRates h = new HeartRates();
            int age = h.age(year);
            int m = h.Rate_m(age);
            int[] m_1 = h.Rate_p(m);
            Console.WriteLine("{0} {1}年 {2}歲 最高心率{3} 最低目標心率{4} 最高目標心率{5}", a_1[0], year, age, m, m_1[0], m_1[1]);

        }
    }
    class HeartRates
    {
        public int age(int year)
        {
            int a = Convert.ToInt32(DateTime.Now.Year.ToString());
            int b = a - year;
            return b;
        }
        public int Rate_m(int age)
        {
            int k = 220 - age;
            return k;
        }
        public int[] Rate_p(int age)
        {
            int lea_r =Convert.ToInt32(age * 0.5);
            int hig_r = Convert.ToInt32(age * 0.85);
            int[] f = new int[] { lea_r, hig_r };
            return f;
        }
    }
}

有任何問題歡迎留言。