1.複習:氣泡排序
問題:有一組資料,排序之前: -1 10 - 20 -30
要求按從小到大的順序排序
解答:1) 排序過程:
第一輪:3次,最大值,冒到最後 10
1) -1 10 不交換 -1 10 - 20 -30
2)10 -20 交換 -1 -20 10 -30
3)10 -30 交換 -1 -20 -30 10
注:第一輪之後,陣列變為: -1 -20 -30 10
第二輪:2次, -1 -20 -30
1)-1>-20 -20 -1 -30
2) -1>--30 -20 -30 -1
注:第一輪之後,陣列變為: -20 -30 -1 10
第三輪: -20 -30 -1 10
1) -20 > -30 -30
-30 -20 -1 10
注:第三輪之後,陣列變為: -30 -20 -1 10
2) 總結: 4個數按從小到大的順序排序,雙重for迴圈排序時:
第1輪:3次
第2輪:2次
第3輪:1次
//注:氣泡排序時,每經過一輪,都會找到那個大的數
第一輪找到最大數,第二輪找到倒數第二個大的數,
第三輪找到倒數第三個大的數
....所以,內層迴圈迴圈條件,不用每次都要比較到最後
每次比較一輪後,找到了大數,下次時,就不需要再比較
這個位置上的數字.所以 j < n.length -1-i
3) 核心**:
for ( int i = 0 ; i < n.length-1 ; i++ )//1
for( int j = 0 ; j < n.length-1-i ; j++ )//1 2
if( n[j]>n[j+1] )
int temp = n[j];
n[j] = n[j+1];
n[j+1] = n[j];
2.複習二維陣列
1) 定義: int[,] score ;
2) 初始化: 元素的個數和每個元素的值
靜態:
int[,] score = ,, }
動態:new
int[,] score = new int[3,2];
3)特點:
1.二維陣列的表示:行和列 [行,列]
2. 二維陣列中的每個元素描述由行和列配合描述
陣列名 [ 行的索引值,列的索引值]
3. 二維陣列的遍歷
//二維陣列的行數
for (int i = 0 ; i < n.getlength(0) ; i++ )
;int newnum =
請輸入要插入元素的位置:2
請輸入要插入元素的值: 4
1.定義乙個新陣列,新陣列長度為原陣列長度+1
2.將num陣列中所有元素複製到新陣列中
int newnum =
3.提示使用者輸入在哪個位置插入元素:2
提示使用者插入元素的值:1000
4.最後遍歷新陣列:
方法使用經驗總結:
當我們使用方法時會發現,要定義乙個方法,完成某乙個
功能,方法的形式寫起來可以有多種,如何找到復用性最
高,且 可讀性更強、質量更高的那個方法呢?
一般遵循以下兩個規則:
1) 方法只負責完成功能,它表示一段功能**塊的封裝,
定義時,只需要給它合適的引數。使用時,呼叫者只要
按照定義的形式傳遞合適的實際值即可。
2) 在方法中,一般不要有列印輸出等語句。如果真不能
寫 列印輸出語句,那麼如果在方法在計算出了相應
結果,如何將結果告訴呼叫者呢?----利用返回值。
也就是說,在定義方法時,根據方法完成的功能,盡量給
方法合適的返回值,最好不要是空。
這樣的好處是:當呼叫者呼叫該方法時,只要傳遞型別
相同,個數相同的引數,方法就可以幫助我們實現功能,
至於傳遞的值是多少,其實方法不關心。
方法做完操作之後,會將處理結果返回給呼叫者。
如果呼叫者需要結果,則可以定義變數或做其它處理 。
如果不需要,也不會影響程式的健壯性。
下面在test類中定義了三個方法,完成的功能都是計算兩個
數的和。根據方法的使用規則,請分析哪個方法綜合是
最合適的,然後在main()方法中分別呼叫這幾個方法,體會
方法的使用。
class test
static void main(string args)
static void add1( int a, int b )
int sum = a + b ;
console.writeline( sum );
static int add2( int a, int b )
return a + b ;
static int add3( )
int a = 10 ;
int b = 20 ;
int sum = a + b ;
console.writeline( sum ); ;
如果對乙個大的數字求階乘,long型別接收的結果會變成0,
原因:階乘結果已經超過了long型別的最大範圍。如何解決?
引用 biginteger 。
第一步:右擊當前專案下的「引用」---新增引用,
在開啟的對話方塊中搜尋 numerics 內容,然後將查詢到的選中
最後選擇「確定」。
第二步:在當前.cs檔案的最上面,新增:using system.numerics;這句話。
第三步:修改 getfac()方法的返回值型別為:biginteger,
同時,修改這個方法中定義接收結果的sum變數的型別也是
biginteger型別。
注:如果main()方法中需要結果,應該將返回結果的型別也定義
為 biginteger型別。
陣列練習題
2 隨機生成乙個五位以內的數,然後輸出該數共有多少位,每位分別是什麼 3 開發乙個標題為 flipflop 的遊戲應用程式。它從1計數到100,遇到3的倍數就替換為單詞 flip 5的倍數就替換為單詞 flop 既為3的倍數又為5的倍數則替換為單詞 flipflop 5 生成13位條形碼 ean 1...
C語言 陣列練習題
1.有n個人圍成一圈,順序排號,從第乙個開始報數 從1到3報數 凡報到3的人退出圈子,問最後留下的是原來第幾號的那位.include int main while m n 1 m代表總共被標記為0的個數 for i 0 i n i return 0 2.字元陣列中在指定位置插入字元 include ...
C語言陣列練習題目
1 編寫程式,輸入10個整數存入一維陣列,統計輸出其中的正數 負數和零的個數。include main for i 0 i 10 i printf 正數 d,零 d,負數 d j,k,l 2 編寫程式,輸入10個整數存入一維陣列,再按逆序重新存放後再輸出 include main 3 輸入10個整數...