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;
}
}
}
有任何問題歡迎留言。