【C#】氣泡排序、隱式和顯式轉換、函式及異常處理
一、普通氣泡排序:
C#中常見的排序方法有:氣泡排序,快速排序,插入排序,選擇排序、堆排序以及歸併排序。雖然還沒學習過,但是也有耳聞,就先把它們先歸類。今天主要講這裡面最常見的氣泡排序。
【概念】
氣泡排序也就是講一組需要排序的數,進行從小到大,或從大到小的排列。計算機的排序沒有人那麼靈活,氣泡排序突出的是順序;
//陣列的排序-氣泡排序 int[] nums = new int[] { 64, 45, 252, 643, 32, 12 }; int temp = 0; for (int j = 0; j < nums.Length - 1; j++) { for (int i = 0; i < nums.Length - 1 - j; i++) { if (nums[i] > nums[i + 1]) { temp = nums[i]; nums[i] = nums[i + 1]; nums[i + 1] = temp; } } } for (int i = 0; i < nums.Length; i++) { Console.Write(nums[i] + "\t"); } Console.ReadKey();
知識點:
Array.Sort(nums); //排序
Array.Reverse(nums); // 這個方法是反轉,可以將你列出的數字或者其他按倒著的順序寫一遍。
Array類可一行程式碼解決排序;
程式碼:
int[] nums = new int[] { 3, 523, 33, 364, 67 }; Array.Sort(nums); for (int i = 0; i < nums.Length; i++) { Console.WriteLine(nums[i] + "\t"); } Console.ReadKey();
二、隱式轉換和顯式轉換
1.隱式轉換
基本概念
當兩個不同型別的運算元進行運算時,編譯器會試圖對其進行自動型別轉換,使兩者變為同一型別。不同的資料型別具有不同的膚質空間,如果試圖將一個需要較大賦值為空間的資料轉換為賦值空間較小的資料,就會出現錯誤。
隱式轉換一般在不同型別的資料進行混合運算時發生,由c#語言編譯器自動完成。
隱式轉換遵循以下規則
1.如果參與運算的資料型別不相同,則先轉換成同一型別,然後進行運算。
2.轉換時按資料長度增加的方向進行,以保證精度不降低,如Int型和Long型資料進行運算時,先把int型資料轉換成long型後,再進行運算。
3 .所有浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表示式,也要先轉換成double型,再進行運算。
4.byte型和short型資料參與運算時,必須先轉換成int型。
5.char型可以隱式轉化為ushort.、int、uint、long、ulong、float、double或decinmal型,但是不存在從其他型別到char型的隱式轉換。
static void Main(string[] args)
{
double m;
int n = 10;
m = n;
Console.WriteLine("m="+n);
Console.ReadKey();
}
上述程式碼中定義了一個double型(高型別)變數m和int型(低型別)變數n。如下程式碼將賦值給m,由於型別不同,系統自動實現了隱式轉換。執行結果如果: m=10
2.顯示轉換
基本概念
在c#中,為了避免隱式轉換可能帶來的錯誤,需要使用強制轉換來執行顯示轉換,強制型別轉換的一般形式如下:
//(float) a 把a轉換為float 型別 //(int)(x+y) 把x+y轉換為int型別
c#允許用System.Convert類提供的型別轉換方法來轉換資料型別,常用的轉換方法有ToBoolean、ToByte、ToChar、ToInt32、ToSingle、ToString等。
舉例
static void Main(string[] args)
{
double m = 5;
int n;
n = convert.ToInt32(m); //使用函式進行型別轉換
Console.WriteLine("n="+n);
Console.ReadKey();
}
三、函式:
函式的語法:
【訪問修飾符】 static 返回值 方法名(【引數列表】) 看見static就是靜態方法
{
方法體
}
舉例解釋函式語法:
Public static int Show()
Public:訪問修飾符
Int:返回值型別,此時為整型
Show:自己定義的方法名,方法名開頭要大寫
命名規則:方法名開頭要大寫,引數名開頭小寫,引數名和變數名要有意義。
return:立即退出方法
我們知道函是有引數或者返回值的,那麼可以有這樣的集中型別:
1.有引數,有返回值:Convert.ToInt32(Object Value)
2. 無引數,有返回值:Console.ReadLine(); 返回值型別為string
3.無引數,無返回值: Console.WriteLine();
無返回值無引數-方法:
static void Main(string[] args)
{
Show();
Console.ReadKey();
}
public static void Show() //這個方法和Main屬於同一級別的,注意寫這個方法的位置
{
Console.WriteLine("請輸入第一個數");
int num1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("請輸入第二個數");
int num2 = Convert.ToInt32(Console.ReadLine());
int number = num1 > num2 ? num1 : num2;//相當於if-else函式,如果num1>num2則顯示num1否則顯示num2
Console.WriteLine("最大值為{0}", number);
}