C 語言基礎(4)

2021-09-29 01:47:36 字數 3594 閱讀 9233

本篇繼續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中的表示式一般...