C 練習題 陣列結構

2022-09-03 16:33:16 字數 3091 閱讀 9106

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個整數...