C語言筆記(四)

2021-07-11 20:29:24 字數 4094 閱讀 1080

1、為什麼要使用陣列?陣列定義?陣列的要素?

思考:輸入輸出10個學生的年齡

資料模型:10個學生年齡

操作:迴圈

乙個整型變數可以儲存乙個學生的年齡

int age0;

int age1;

int age2;

int age3;

int age4;

int age5;

int age6;

int age7;

int age8;

int age9;

總結:資料型別相同(int),個數已知(10)

為什麼要使用陣列:當程式中出現大量相同資料型別變數時,我們可以通過陣列對這些相同資料型別變數進行整體定義

陣列:大量相同資料型別變數的集合{}

陣列的要素:

1:成員的資料型別要相同

2:陣列成員個數已知

2、陣列的定義

格式:資料型別 陣列名[常量];

陣列名:滿足識別符號命名規則(位址常量,等於陣列首元素的位址)

資料型別:陣列成員的資料型別

常量:陣列成員的個數

常量常見表示方式:

1:整型資料:10、5

2:識別符號常量:#define num 10

3:const修飾的變數:const int num=10;

例子:int arr[10];

課堂練習:

1:定義出乙個整型陣列,陣列成員是100個 int arr[100]

2:定義出乙個單精度的浮點型數字,陣列成員10個  

#define num 10

float arr[num];

3:定義出乙個字元型陣列,陣列成員100個

const int size=10;

char but[size];

為什麼要這樣定義陣列?

陣列名:陣列的名字

資料型別:描述整個陣列成員的資料型別

常量:描述陣列成員的個數

陣列名:位址常量,等於陣列首元素位址

3、常見陣列的種類

分類:資料型別

1:數值陣列(int,float,double)

2:字元陣列(char,字串)

3:指標陣列

4:結構體陣列

4、陣列成員的使用

1:下標法

格式:陣列名[下標];(下標從0開始到n-1結束)

int arr[5];//arr[0],arr[1],arr[2],arr[3],arr[4]

2:指標法

課堂練習:

1:定義整型陣列,有5個成員,成員值由螢幕輸入並逆序列印成員值

5、陣列成員在記憶體中的儲存形式

思考:1:連續儲存,乙個成員挨著乙個成員

2:不連續:不挨著

課堂練習:

定義乙個成員個數為10字元型陣列,列印每個陣列成員在記憶體中的位址

6、陣列的大小

計算陣列大小的方式:sizeof(陣列名);

int arr[5];

printf(「%lu」,sizeof(arr));

練習:定義乙個整型和字元型陣列,陣列成員分別是5個和10個,分別計算這兩個陣列大小。

為什麼?

陣列成員資料型別相同————>陣列成員的大小

陣列的大小=每個成員的大小*成員的個數

int arr[5]——>sizeof(int)*5

int [5]——>sizeof(int[5])——>20

7、陣列的初始化

陣列初始化的方式:

1:完全初始化  例子:int arr[5]=;

2:部分初始化  例子:int arr[5]=;

3:沒有指定初始化值  例子:int arr[5]={};(常用)

4:沒有指定成員個數  例子:int arr=;

5:未初始化  例子:int arr[5];

練習:1:用陣列來輸出fibonacci數列的前20位成員值並計算前20個成員的和。

8、陣列成員的賦值

1:初始化

2:for-scanf

3:for +賦值語句

9、與陣列相關的操作

1:陣列成員的取值和賦值

練習:1:定義乙個整型陣列,陣列成員10個,成員大小等於下標兩倍,逆序輸出成員。

2:定義乙個整型陣列,陣列成員10個,從螢幕輸入陣列成員的值,並輸出成員值的和。

隨機數函式 n = rand()//產生的隨機值在0~0x7fffffff之間

隨機數種子函式

2:陣列成員的比較和查詢

練習:1:定義乙個陣列,陣列成員10個,找出陣列中最大的數連同下標一起輸出。

2:定義乙個陣列,陣列成員10個,找出陣列中最小的數連同下標一起輸出。

3:青年歌手參加歌曲大獎賽,有10個評委進行打分,試程式設計求這位選手的平均得分(去掉乙個最高分和乙個最低分)。

3:陣列成員的交換和翻轉

練習:1:定義乙個陣列,陣列成員10個,將相鄰陣列成員交換,並輸出交換後陣列成員。

2:定義兩個陣列,陣列成員都為10個,將下標相同資料進行交換,交換後輸出。

3:定義乙個陣列,陣列成員10個,將陣列中的值逆序重新存放

4:陣列的排序(冒泡)

氣泡排序:

冒泡原則(公升序):陣列中相鄰成員進行比較,小數在前,大數在後(交換)

冒泡的結果:一次冒泡,把陣列中乙個數冒到正確的位置上

練習:1:定義乙個陣列,陣列10個成員,用冒泡法公升序排列並輸出。

2:定義乙個陣列,陣列10個成員,用冒泡法降序排列並輸出。

5:在有序陣列中插入乙個數

練習:1:定義乙個陣列,按公升序排列後,插入乙個數到該陣列中,插入後仍然有序

1 3 6 9 15———>7//arr[6]

1:找到插入的位置--->遍歷陣列,發現陣列中的某個數比插入的數大

2:插入——>從陣列中最後乙個數後移

6:在陣列刪除乙個數

練習:1:定義乙個陣列,在陣列中刪除乙個數

課後練習:(陣列實現)

1.給定某個整型陣列,計算該陣列所有偶數的合。

2.給某個整型陣列賦值,賦值規律如下,下標能被3整除的都賦值為1,能被5整除的都賦值為2,能被7整除的都賦值為3,其餘都賦值為0. 3.

通過終端輸入10個整數並將其儲存在乙個整型陣列中,數字儲存在陣列中的順序與下標正好相反,也就是第乙個被輸入的數放在陣列最後乙個元素中,最後乙個輸入的數字放到第乙個元素中。

4.通過終端輸入10個整數,計算10個整數中所有能被3整除的數的合。

5.給定乙個5個元素構成的整型陣列,每個元素的值都在0-9之間,按照位置將其組成乙個5位數並輸出,例如int a[5] =

;則輸出73221。

6.給定2個大小一樣的整型陣列,將某個陣列作為源陣列,另乙個作為目的陣列,然後將源陣列的內容拷貝到目的陣列。

7.給定乙個整型陣列,將第乙個跟最後乙個元素的內容交換。

8.給定乙個整型陣列,從第1個元素開始將相鄰的兩個元素分別相互交換。交換完後,第1個元素將變成最後乙個元素,其餘元素都前進一位。

9.給定乙個有10個整形數的元素,將前5個元素跟後5個元素做整體交換,比如

->。

10.判斷乙個整型陣列是否是對稱陣列,例如

和都是對稱陣列。

11.給定兩個大小一樣的整型陣列,交換這兩個陣列的內容。

12.給定兩個大小一樣的整型陣列,將兩個陣列中下標一樣的元素兩兩相加,相加後的結果作為這兩個陣列對應下標的新值,也就是操作完畢後兩個陣列的內容完全相同。

13.給定乙個能容納10個元素的整型陣列,現有9個元素,現在第5個元素的位置插入乙個數字88,後面的數字順序後移。

14.給定乙個10個元素的整型陣列,現在將第2個元素刪除,後面的陣列順序前移。

15.給定乙個有100個元素的陣列,查詢陣列中是否有元素的值等於某個數n。

16.給定乙個整型陣列,求該陣列元素中最大值的下標。

17.給定乙個整型陣列,求該陣列中第二大的數的下標。

18.給定乙個整型陣列,求該陣列中數值小於10的元素的個數。

19.給定乙個整型陣列,計算大於該陣列平均值的元素的個數。

20.給定乙個整型陣列,找到陣列中的最小值,並將其放到陣列的首元素中,原來首元素的內容放到最小值所在的元素中。

21.給定乙個整型陣列,統計某個整數在陣列中出現的次數。

C語言筆記(四)

第十九節 條件編譯使用分析 1 include的本質是將已經存在的檔案內容嵌入到當前檔案中 2 include的間接包含同樣會產生嵌入檔案內容的操作 3 條件編譯使得我們可以按不同的條件編譯不同的 段,因而可以產生不同的目標 4 if else endif被預處理器處理,而if else 語句被編譯...

C語言筆記(四)const

變數定義的方式 const 在型別前 const int var 1oo const在型別後 int const var2 999 以上兩種定義的方式沒有區別 const變數在定義的時候被初始化,當乙個變數被const變數意味著該變數是乙個常量,不可修改,換句話說該變數只能做右值,不能做左值 int...

c語言學習筆記四

結構體 復合型別和結構體 復合型別 示例 struct test sturuct 如果用這種復合型別來定義變數 示例 struct test stuructz1,z2 定義訪問結構體 include int main void z int x 3 z.x x z.y 4 printf z f f z...