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...