本篇繼續c#學習的筆記,上次的筆記中記錄了關於c#的方法的構造與呼叫,本篇會繼續關於方法的相關知識。
方法內部又呼叫自身的過程
核心思想:將問題轉移給範圍縮小的子問題
適用性:在解決問題中,又遇到相同的問題
優點:將複雜的問題簡單化
缺點:效能較差
應用:計算階乘
編寫乙個函式,計算引數為8時的結果
(請使用遞迴實現)
1-2+3-4+5-6+7-8
使用遞迴的關鍵問題是防止無線遞迴
兩個方法名稱相同,但引數列表不同。
用於在不同條件下解決同一型別的問題。
僅僅out與ref的區別不可以構成過載
c#內有很多內建的方法,他們大多有很多的過載方法,會讀懂方法的說明可以更好地理解不同的過載方法的用途。
從array類派生的,一組資料型別相同的變數組合
一種空間連續的資料結構
元素通過索引(位置的序號)進行操作
宣告陣列
資料型別 陣列名;
初始化陣列
陣列名=new 陣列型別[元素總數]
初始化的元素型別與宣告時的型別必須相同。
例:int array01=new int[5];
string array02=new string[3];
int=a;
a=new int[6];//初始化new資料型別[容量] ,new指開闢空間,資料型別指多大,容量指幾個,因此此處不能寫為new a
a[0]=1;//通過索引讀寫每個元素
陣列初始化後,內容中儲存該資料型別的預設值
整形為0;非整形為0.0;char為\0;string為null;bool為false。
可以在陣列初始化的同時對元素進行賦值
語法:資料型別 陣列名=new 資料型別元素1,元素2;
初始化是內可以填入陣列長度,但必須與所賦值的元素總數一致
可以在陣列宣告的同時對元素進行賦值。
語法:資料型別 陣列名=l
元素個數即為陣列長度。
程式設計師可以省略初始化,但編譯器內部仍然會new資料型別
不支援寫法:
double array;
array=;
可以通過陣列的索引(位置的序號)進行讀寫操作
語法:陣列名
遍歷:按照某種順序訪問每個元素
這種方法十分常見不做贅述。
foreach是一種更簡單更明了的讀取陣列元素的語句
語法:foreach(元素型別 變數名 in 陣列名稱)
//從頭到尾一次讀取陣列元素,只能讀取,不能修改
優點:使用簡單
缺點:只能讀取全部元素,不能修改元素
只能遍歷實現ienumerable的集合物件
陣列的長度:陣列名.length
清楚元素值:array.clear
複製元素:array.copy 陣列名.copyto
轉殖:陣列名.clone
查詢元素:array.indexof array>lastindexof
排序:array.sort
反**array.reverse
至此我們又學習到c#中的一大重要概念,將它與之前的結合,可以完成雙色球彩票**的功能。
class
class2
console.
writeline()
;int
luckynumbers =
createluckynumbers()
; console.
write
("本期中獎號為:");
foreach
(var item in luckynumbers)
prizelevel
(lotterynumber,luckynumbers);}
private
static
void
buylottery
(int
arr)
個紅球號碼"
, i +1)
;int a=
int.
parse
(console.
readline()
);if(
(a >=
1&& a<=33)
)else console.
writeline
("該號碼已存在");
}else console.
writeline
("輸入錯誤");
}dowhile
(arr[arr.length -1]
<
1|| arr[arr.length -1]
>16)
;}private
static
int[
]createluckynumbers()
} array.
sort
(luckynumber)
;int
luckynumbers =
newint[7
];array.
copy
(luckynumber,luckynumbers,6)
; luckynumbers[6]
= random.
next(1
,16);
return luckynumbers;
}private
static
void
prizelevel
(int
lotterynumber,
int[
] lucknumbers)
int sum = red + blue;
switch
(sum)
level =
"三";
break
;case
5: level =
"四";
break
;case
4: level =
"五";
break
;case
3: level =
"六";
break
;default
:level =
"0";
break;}
if(level !=
"0") console.
writeline
("恭喜你中了等獎"
,level)
;else console.
writeline
("很遺憾,您沒中獎");
}}
var//推斷型別:根據所賦資料,推斷型別
適用性:資料型別名稱較長
araay //宣告父類型別 賦值子類物件
array arr=new int;
object
//萬類之祖
//宣告object型別 賦值任意型別
經常出現問題:stack overflow:堆疊溢位,指沒有好的收尾,無線遞迴
至此,c#中又一大概念引入進來,讓我們通過程式設計實現的功能更加豐富,之後還會有多維陣列,類,介面等等的內容的學習,難度也在不斷增加,所以加油!
C語言基礎4
基 礎 概 括 陣列 陣列 由同一種資料,型別組成。陣列中只能存放一種型別的資料。元素 陣列大括號裡的數字。陣列元素的個數只能是常量值。定義陣列 陣列的型別 陣列名 數值列印格式 printf 陣列名 d d n 陣列名 i 遍歷 按順序檢視陣列中每乙個元素。小語法 只要確定大括號中元素的個數,就能...
c語言基礎4
指標常量和指標變數的區別 常量只在宣告的時候賦值,變數可以在任何時候賦值,對於指標來說,就是常量指標指向的位址從宣告之後就再也改變不了。float零值 const float epsion 0.000001 if n epsion n epsion 在這之間的就是float的零值 函式和指標 在c語...
C語言基礎 4
一 控制語句 1 順序語句 2 分支語句 1 if else 語句 三種形式 簡答形式 if 表示式 語句 eg if a b printf a b n 階梯形式 if 表示式1 語句塊1 else if 表示式2 語句塊2 else 語句塊n eg 練習 輸出學生成績等級 注意 if中的表示式一般...