C#的初學知識點
初學C#
初見Hello,World
第一句源代碼:Console.WriteLine("Hello,World");;
認識.Net;
編譯工具:Visual Studio;
主函數:Public static void main(string[] args);
輸出語句:Console.WriteLine("Hello,world");
變量和數據類型
數據類型:常見的C#數據類型:char.string.int.double
變量:變量的語法:數據類型+空格+變量名+“;”;變量的賦值:變量名+“=”+數據+“;”
變量的命名:語法:數據類型+空格+名稱
變量的使用技巧:變量的三要素:數據類型、變量名、變量值
數據的運算:double類型和int類型運算,返回類型為double
字符串運算:字符串運算的方式是拼接;拼接符號:“+”
輸入語句:內容:Console.ReadLine();
類型轉換:任何類型轉換到string: 待轉換的數據.ToString();
數字類型:整數用int,實數用double
11轉義符“\”:··以反斜線"\"開頭,後跟一個或幾個字符
代碼註釋:單行註釋,多行註釋和文檔註釋
軟件中的錯誤及調試:編譯錯誤,運行錯誤和邏輯錯誤
運算符和表達式
認識運算符:一目運算符、二目運算符、三目運算符
小括號:類型轉換、改變運算順序、函數調用
算術運算符:
變量名++(--):1.計算返回結果,與變量相同;2.將變量的值增加1
++(--)變量名:1.計算返回結果,變量值加1;2.將變量的值增加1
賦值運算符: =;+=;-=;/=;%=
邏輯運算符:true和false
三目運算符:判斷條件?操作數1:操作數2
表達式:int a=1+2
運算符優先級:優先級越高的運算符,會優先得到執行
健康計算器:
while(true) { //完成所有的提示工作並存入輸入的變量; Console.WriteLine("請輸入你的性別(男或女):"); string input = Console.ReadLine();健康計算器if (input == "男" || input == "女") { Console.WriteLine("請輸入你的身高(厘米):"); double height = double.Parse(Console.ReadLine()); Console.WriteLine("請輸入你的體重(千克):"); double weight = double.Parse(Console.ReadLine()); //計算標準體重 double standarWeigtht = input == "男" ? (height - 80) * 0.7 : (height - 70) * 0.6; if (weight < standarWeigtht * 0.9) { Console.WriteLine("標準體重的範圍是:" + 0.9 * standarWeigtht + "-----" + 1.1 * standarWeigtht + "之間~"); Console.WriteLine("很遺憾!您的體重偏瘦,請註意補充營養!"); } else if (weight > 1.1 * standarWeigtht) { Console.WriteLine("標準體重的範圍是:" + 0.9 * standarWeigtht + "-----" + 1.1 * standarWeigtht + "之間~"); Console.WriteLine("很遺憾!您的體重偏胖,請註意多多鍛煉!"); } else { Console.WriteLine("標準體重的範圍是:" + 0.9 * standarWeigtht + "-----" + 1.1 * standarWeigtht + "之間~"); Console.WriteLine("恭喜您!您的身材很健康,請繼續保持~"); } Console.ReadLine(); break; } else { Console.WriteLine("別開玩笑好嘛!請重新輸入“男”或者“女”t"); } } }
流程控制
流程圖:功能分析和代碼書寫分離;更加專註,便與解決復雜問題
if判斷:代碼格式:if(條件1){代碼1} else if (條件2) {代碼2} else {代碼N}
變量作用域:在大括號內,該變量有效,大括號外無效
收益計算器:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { /* int sum = 0; for (int i = 1; i <= 100;i++ ) { sum += i; } Console.WriteLine(sum); */ /* Console.WriteLine("請輸入一個數:"); int input = int.Parse(Console.ReadLine()); switch(input) { 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 7: Console.WriteLine("星期日"); break; default: Console.WriteLine("錯誤顯示"); break; } */ Console.WriteLine("請輸入您的存款金額(萬):"); double input = double.Parse(Console.ReadLine()); Console.WriteLine("請輸入您要存款的時間(年):"); int input2 = int.Parse(Console.ReadLine()); if (input2 <= 0) { Console.WriteLine("請重新輸入時間:"); } if (input2 == 1) { if (input <= 0) { Console.WriteLine("請重新輸入金額!"); } else if (input > 0 && input < 50) { double money1 = input * 0.04 * 1; Console.WriteLine("恭喜你,存款成功,1年後到期," + "您的利息為:" + money1 + "(萬元)"); } else { double money2 = 1.1 * input * 0.04 * 1; Console.WriteLine("恭喜你,存款成功,1年後到期," + "您的利息為:" + money2 + "(萬元)"); } } if (input2 >= 2 && input2 <= 5) { int time = (int)input2; if (input <= 0) { Console.WriteLine("請重新輸入金額!"); } else if (input > 0 && input < 50) { double money1 = input * 0.048 * time; Console.WriteLine("恭喜你,存款成功," + input + "年後到期," + "您的利息為:" + money1 + "(萬元)"); } else { double money2 = 1.1 * input * 0.048 * time; Console.WriteLine("恭喜你,存款成功," + input + "年後到期," + "您的利息為:" + money2 + "(萬元)"); } } if (input2 > 5) { int time = (int)input2; if (input <= 0) { Console.WriteLine("請重新輸入金額!"); } else if (input > 0 && input < 50) { double money1 = input * 0.052 * time; Console.WriteLine("恭喜你,存款成功," + input + "年後到期," + "您的利息為:" + money1 + "(萬元)"); } else { double money2 = 1.1 * input * 0.052 * time; Console.WriteLine("恭喜你,存款成功," + input + "年後到期," + "您的利息為:" + money2 + "(萬元)"); } } Console.ReadLine(); } } }收益計算器
Switch選擇:代碼格式:switch() {case 1:break; case 2:break;}
While循環:代碼格式:while(循環條件){循環體} //循環體可以是任意功能,任意數量的代碼
do While循環:先執行一次循環體
for循環:代碼格式:for(表達1;表達式2;表達式3) { 循環體}
查找問題:簡單查找:在樣本中,依次尋找目標數據
數組與集合
數組:數據類型 【】 變量名 =new 數據類型【長度】
數組的定長性:長度固定不變
數組的遍歷:從數組的第一項開始,依次取完數組的所有項
交換排序:
for (int i = 0; i < arr.Length; i++) { for (int j = i + 1; j < arr.Length; j++) { if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i]); if (i < arr.Length) { Console.Write(","); } }交換排序
數組分析器:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("請輸入數組的長度:"); int len = int.Parse(Console.ReadLine()); int[] arr = new int[len]; for (int i = 0; i < arr.Length; i++) { Console.WriteLine("請輸入第" + (i + 1) + "項的值"); arr[i] = int.Parse(Console.ReadLine()); } Console.WriteLine("數組所有項的值為:"); for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i]); if (i < arr.Length) { Console.Write(","); } } Console.WriteLine("\n"); Console.WriteLine("數組從小到大排序後是:"); for (int i = 0; i < arr.Length; i++) { for (int j = i + 1; j < arr.Length; j++) { if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i]); if (i < arr.Length) { Console.Write(","); } } //求是否為奇數 Console.WriteLine("\n"); Console.WriteLine("數組裏的奇數有:"); for (int i = 0; i < arr.Length; i++) { if (arr[i] % 2 != 0) { Console.Write(arr[i]); if (i < arr.Length) { Console.Write(","); } } } Console.WriteLine("\n"); Console.WriteLine("數組裏的質數有"); for (int i = 0; i < arr.Length; i++) { int n = arr[i]; bool isFind = false; for (int j = 2; j < n; j++) { if (n % j == 0) { isFind = true; break; } } if (isFind == true) { //bushizhishu } else { Console.Write(n); if (i < arr.Length) { Console.Write(","); } } } Console.ReadLine(); } } }數組分析器
集合:不定長,占用內存多,遍歷速度慢
數組能實現的所有功能,集合都能實現
foreach循環:只能用於遍歷數組或集合
集合管理器:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 集合管理器 { class Program { static void Main(string[] args) { List<int> numbers = new List<int>(); while (true) { Console.WriteLine("集合中現有內容如下:"); Console.WriteLine("=============================================="); //顯示集合 if (numbers.Count == 0) { Console.WriteLine("集合中沒有元素"); } else //集合的遍歷 { foreach (int item in numbers) { Console.Write(item+"\t"); } Console.WriteLine();//循環結束後讓光標換行 } Console.WriteLine("=============================================="); Console.WriteLine("1.添加數據"); Console.WriteLine("2.刪除數據"); Console.WriteLine("3.修改數據"); Console.WriteLine("4.升序排序"); Console.WriteLine("0.退出程序"); Console.WriteLine("請選擇(0-4):"); int num = int.Parse(Console.ReadLine()); if(num==0) { break; } else if(num==1) { Console.WriteLine("請輸入要添加的數字:"); //添加數據 int input=int.Parse(Console.ReadLine()); numbers.Add(input); } else if(num==2) { //刪除數據 Console.WriteLine("請輸入要刪除的元素(相同元素只會刪除第一個):"); int input=int.Parse(Console.ReadLine()); numbers.Remove(input); } else if(num==3) { //修改數據 if(numbers.Count==0) { Console.Write("集合中沒有任何數據可以修,按回車鍵繼續。。。"); Console.ReadLine(); } else{ int maxIndex=numbers.Count-1; Console.WriteLine("請輸入你要修改的元素下標(0-"+maxIndex+"):"); int input1=int.Parse(Console.ReadLine()); if(input1<0||input1>maxIndex) { Console.WriteLine("輸入錯誤,下標超出範圍,按回車鍵繼續..."); Console.ReadLine(); } else { Console.WriteLine("請輸入新的數據:"); int input2=int.Parse(Console.ReadLine()); numbers[input1]=input2; } } } else if(num==4) { //升序排序 for (int i = 0; i<numbers.Count-1; i++) { for (int j = i+1; j < numbers.Count;j++ ) { if(numbers[i]>numbers[j]) { int temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } } } } else { Console.WriteLine("請重新選擇!"); } Console.Clear();//清屏 } } } }集合管理器
函數
認識函數:具有獨立功能,並能通過名稱重復使用的代碼
作用域:一個變量,僅在他所定義的大括號中有效
標識符:變量名,函數名,類名,接口名,委托名,其他
聲明帶參數的函數:聲明帶參數的函數:static void 函數名(參數列表){//註釋內容}
調用帶參數的函數:函數編寫時,參數為形參;函數調用 時,
參數為實參;實參的數量和類型必須和形參完全對應
聲明帶返回值的函數:static 返回類型 函數名(形參列表){//函數體}
如果一個函數不需要返回,那麽它的返回類型就會void
當代碼運行到return語句時,立即結束函數
返回return關鍵字後面的值,變量或表達式的結果
調用帶返回值的函數:函數名(實參列表)
返回類型與函數聲明的返回類型一致
函數簽名:是一個函數的函數名、參數列表、返回類型的統稱
根據它實現函數調用;根據它實現函數體
文檔註釋:符號:///;通常寫到函數體外,用於描述函數體外的代碼
函數重載(overload):是指多個函數可以使用同一個函數名,只要他們的參數列表不同
函數的相互調用:在任意一個函數中,都可以調用其他的函數
只要代碼運行到調用函數的語句,就回去執行調用的函數體
遞歸函數:是指一個函數,直接或者間接的調用自身
遞歸必須有終止條件,否則,將會出現無限遞歸
C#的初學知識點