C05 C語言字串和陣列
目錄
- 陣列
- 字串
陣列
概念
- 陣列是有序資料的集合。
- 陣列中的每一個元素屬於同一個資料型別。
- 通過陣列名和下標唯一確定陣列中的元素。
一維陣列的定義
語法格式
資料型別 陣列名[常量表達式]
例如:int arr[10]
表示定義了一個整型陣列,陣列名為a,陣列中有10個元素。
陣列的下標從0開始。
陣列元素的引用
C語言規定只能逐個引用陣列元素二不能一次引用整個陣列。
陣列元素的的表示形式為: 陣列名[下標]
示例:
輸出結果:
陣列初始化
1.在定義陣列時初始化
2.初始化部分元素值
輸出
3.初始化全部元素值
初始化全部元素時候,可以不指定陣列長度
4.所有元素初始化為0
輸出
注意:只能限於初始化元素為0值。否則的話只是對第一個元素初始化。
示例
使用陣列解決Fibonacci數列。
Fibonacci數列定義:數列由 0 和 1 開始,之後的係數由之前的兩數相加。首幾個斐波那契係數是:
0,1,1,2,3,5,8,13,21
輸出結果:
二維陣列的定義
語法格式
陣列名[下標][下標]
二維陣列的引用
同一維陣列,通過陣列名和下標確定唯一的二維陣列元素。
二維陣列的初始化
1.分行初始化
輸出:
2.全部初始化
3.部分元素初始化
輸出:
4.初始化全部資料時候可以不指定第一維長度
示例
將一個二維陣列行和列的元素互換,保持到另一個二維陣列中。
原始碼:
字串
定義
C語言中沒有定義字串型別的資料,所以字串是作為字元陣列來處理的。字元陣列的定義和使用同其他基本資料型別陣列。
注意:字元陣列中,C語言使用’\0’來結束一個字串。如果一個數組包含1個以上的’\0’,則遇到第一個’\0’的時候輸出結束。
使用字串初始化字元陣列
輸出:
或者:
使用scanf函式接收資訊初始化字元陣列
注意,sacnf中,陣列作為地址引數不需要新增”&”。
字串處理函式
puts()和gets()
語法格式:
puts(字元陣列) :向終端輸出字串
gets(字元陣列) :從中斷獲取字串
示例:
strcat()
語法格式:
strcat(字元陣列1,字元陣列2)
作用:
把字元陣列2連線到字元陣列1後面,結果放在字元陣列1中。
示例:
輸出:
strcpy()和strncpy()
語法格式:
Strcpy(字元陣列1,字串2)
作用:
將字串2複製到字元陣列1中。
示例:
輸出:
注意:
1.字元陣列1必須寫出陣列名形式;字串2可以是字元陣列名,也可以是一個字串常量。
2.C語言中,不能使用賦值語句將一個字串常量或者字元陣列直接賦值給一個字元陣列,例如以下是錯誤的:
3.strncpy(字元陣列1,字串2,複製長度)可以指定字串2中的前n個字元複製到字元陣列1中。
strcmp()
語法格式
strcmp(字串1,字串2)
作用
比較字串1和字串2
比較規則:
兩個字串從左向右逐個字元比較(按照ASCII碼值比較),直到出現’\0’為止。如果全部字元相同,則兩個字串相等;若出現不同的字元,則以第一個不相同的字元的比較結果為準。
示例:
strlen()
語法格式
strlen(字元陣列)
作用
測量字元陣列的長度,不包括’\0’。
strlwr()和strupr()
語法格式
strlwr(字串)和strupr(字串)
作用
把字串轉換成小寫(或者大寫)。
strcspn()
語法格式
strcspn(字串1,字串2)
作用
查詢字串2在字串1中的位置
示例
上機練習
- 需求描述:設計一個字元二維陣列,用來儲存學生資訊,學生資訊包括:學號,姓名、性別(男或者女)、年齡、電話、地址。
- 提示:二維陣列定義 students[10][300],從控制檯接收學生資訊保持到二維陣列,從陣列讀取學生資訊,顯示到控制檯。
- 提示程式碼: