版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 C語言支持的數(shù)據(jù)類型 數(shù)據(jù)類型決定:數(shù)據(jù)類型決定:1. 1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 2. 數(shù)據(jù)取值范圍數(shù)據(jù)取值范圍3. 3. 可進行的操作可進行的操作數(shù)據(jù)類型數(shù)據(jù)類型本章要點本章要點1.1.什么是數(shù)組什么是數(shù)組? ? 為什么要使用數(shù)組為什么要使用數(shù)組? ? 如何定義數(shù)組如何定義數(shù)組? ?2.2.如何引用數(shù)組元素如何引用數(shù)組元素? ?3.3.數(shù)組元素在內(nèi)存中按什么方式存放數(shù)組元素在內(nèi)存中按什么方式存放? ?4.4.什么是字符串什么是字符串? ? 字符串結(jié)束符的作用是什么字符串結(jié)束符的作用是什么? ?5.5.如何實現(xiàn)字符串的存儲和操作,包括字符串的輸入如何實現(xiàn)字符串的存儲和操作,
2、包括字符串的輸入和輸出和輸出? ?6.6.怎樣理解怎樣理解C C語言將字符串作為一個特殊的一維字符語言將字符串作為一個特殊的一維字符數(shù)組數(shù)組? ? 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串問題的提出問題的提出n輸入輸入10個數(shù),之后再將他們輸出。個數(shù),之后再將他們輸出。main( ) int a0,a1,a2,a3,a4,a5,a6,a7,a8,a9; scanf(“%d”,&a0); scanf(“%d”,&a1); scanf(“%d”,&a2); scanf(“%d”,&a3); scanf(“%d”,&
3、;a4); scanf(“%d”,&a5); scanf(“%d”,&a6); scanf(“%d”,&a7); scanf(“%d”,&a8); scanf(“%d”,&a9);printf(“%d”,a0);printf(“%d”,a1);printf(“%d”,a2);printf(“%d”,a3);printf(“%d”,a4);printf(“%d”,a5);printf(“%d”,a6);printf(“%d”,a7); printf(“%d”,a8);printf(“%d”,a9); 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字
4、符數(shù)組和字符串字符數(shù)組和字符串問題的提出問題的提出n我們希望我們希望main( ) 一下定義一下定義10個整數(shù)個整數(shù) a10; 循環(huán)輸入循環(huán)輸入 scanf(“%d”,&ai); 循環(huán)輸出循環(huán)輸出 printf(“%d”,ai); 一批相同類型的變量使用同一個數(shù)組變量名,用下一批相同類型的變量使用同一個數(shù)組變量名,用下標來相互區(qū)分。標來相互區(qū)分。優(yōu)點:表述簡潔,可讀性高;便于使用優(yōu)點:表述簡潔,可讀性高;便于使用循環(huán)循環(huán)結(jié)構(gòu)結(jié)構(gòu) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串數(shù)組的概念數(shù)組的概念n數(shù)組:數(shù)組:相同類型相同類型變量的集合,共用一個名
5、字,用變量的集合,共用一個名字,用下標區(qū)別。下標區(qū)別。n按照下標遞增在內(nèi)存中連續(xù)存放。按照下標遞增在內(nèi)存中連續(xù)存放。n數(shù)組元素:數(shù)組中的變量。數(shù)組元素:數(shù)組中的變量。n每個元素都屬于同一類型。每個元素都屬于同一類型。n由由數(shù)組名數(shù)組名和和下標下標唯一標識。唯一標識。 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串第五章數(shù)組第五章數(shù)組5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3 字符數(shù)組和字符串字符數(shù)組和字符串l 一維數(shù)組好比數(shù)學中的數(shù)列,各個元素排成一排。一維數(shù)組好比數(shù)學中的數(shù)列,各個元素排成一排。l二維數(shù)組好比數(shù)學中的矩陣,各個元素先站成排,
6、二維數(shù)組好比數(shù)學中的矩陣,各個元素先站成排,各個排再站成列。各個排再站成列。l字符數(shù)組也是一維或二維數(shù)組,它的元素都是字符字符數(shù)組也是一維或二維數(shù)組,它的元素都是字符型變量。型變量。 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.1 一維數(shù)組一維數(shù)組n一維數(shù)組是一種構(gòu)造數(shù)據(jù)類型。一維數(shù)組是一種構(gòu)造數(shù)據(jù)類型。學習如下:學習如下:n5.1.1 一維數(shù)組定義一維數(shù)組定義n5.1.2 一維數(shù)組元素的引用一維數(shù)組元素的引用n5.1.3 一維數(shù)組的初始化一維數(shù)組的初始化 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.1
7、.1 一維數(shù)組的定義一維數(shù)組的定義n一維數(shù)組的定義形式:一維數(shù)組的定義形式: 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名常量表達式常量表達式合法標識符合法標識符數(shù)組元素個數(shù),數(shù)組長度數(shù)組元素個數(shù),數(shù)組長度數(shù)組元素的類型數(shù)組元素的類型2004 a0 a1 a2 a920002008內(nèi)存內(nèi)存2036例例 int a10;一批相同類型的變量一批相同類型的變量使用同一個數(shù)組名使用同一個數(shù)組名, ,用下標來相互區(qū)分。用下標來相互區(qū)分。 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.1.1 一維數(shù)組的定義一維數(shù)組的定義l 數(shù)組名遵循標識符的命名規(guī)則。數(shù)組名遵循標識符的命名規(guī)
8、則。l注意使用注意使用 l數(shù)據(jù)類型可以是任何類型,如數(shù)據(jù)類型可以是任何類型,如int,float,charl常量表達式說明數(shù)組元素個數(shù)定義后不允許改變。常量表達式說明數(shù)組元素個數(shù)定義后不允許改變。n正確的定義方式正確的定義方式n int b2+3;n int c10;n錯誤的定義方式錯誤的定義方式 n int x=10,ax;n int a(10);n int a1.0; 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串n數(shù)組元素必須先定義,后使用。數(shù)組元素必須先定義,后使用。n不能一次使用整個數(shù)組,只能使用元素。不能一次使用整個數(shù)組,只能使用元素。n使用
9、數(shù)組元素與使用使用數(shù)組元素與使用一般變量一般變量方法完全相同。方法完全相同。使用數(shù)組元素的形式:數(shù)組名使用數(shù)組元素的形式:數(shù)組名下標下標例如例如 int a10 ;/定義定義10個變量:個變量:a0、a1 a9 scanf(“%d”,&a0); /為為a0賦值賦值 a1=10* *a0; /計算計算a1的值的值 printf(“%d”,a1); /輸出輸出a1n下標不要越界,不能使用下標不要越界,不能使用a105.1.2 一維數(shù)組元素的引用一維數(shù)組元素的引用 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.1.3 一維數(shù)組的初始化一維數(shù)組的初始
10、化n (1)對全部數(shù)組元素賦初始值對全部數(shù)組元素賦初始值 int a5=1,2,3,4,5;a12345 a0 a1 a2 a3 a4n(2)對部分數(shù)組元素賦初始值對部分數(shù)組元素賦初始值 int a5=1,2,3;n(3)可以省略數(shù)組長度,系統(tǒng)自動計算??梢允÷詳?shù)組長度,系統(tǒng)自動計算。 int a =1,2,3,4,5; /長度就是長度就是5 a12300 a0 a1 a2 a3 a4 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.1.3 一維數(shù)組的初始化一維數(shù)組的初始化n 問題問題1,例如,例如int a5; printf(“%d”,a0); 會輸
11、出什么?會輸出什么?隨機數(shù)隨機數(shù)n 問題問題2,要定義,要定義100個整型變量,初值都為個整型變量,初值都為0,怎么寫?,怎么寫?int a100=0; 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串 只能逐個對數(shù)組元素進行操作(字符數(shù)組例外)只能逐個對數(shù)組元素進行操作(字符數(shù)組例外)輸入方法:輸入方法:int a10,i;輸入第輸入第i個數(shù)組元素:個數(shù)組元素:scanf(%d,&ai);輸入所有數(shù)組元素:輸入所有數(shù)組元素:for (i=0;i10;i+) scanf(%d,&ai);輸出方法:輸出方法:輸出第輸出第i個數(shù)組元素:個數(shù)組元
12、素:printf(%d,ai); 輸出所有數(shù)組元素:輸出所有數(shù)組元素:for (i=0;i10;i+) printf(%d,ai);5.1.4 5.1.4 一維數(shù)組應用舉例一維數(shù)組應用舉例n一維數(shù)組的輸入和輸出一維數(shù)組的輸入和輸出 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.1.4 5.1.4 一維數(shù)組應用舉例一維數(shù)組應用舉例例例5.1 建立一個存放建立一個存放10個數(shù)據(jù)的數(shù)組,數(shù)組元素值為數(shù)個數(shù)據(jù)的數(shù)組,數(shù)組元素值為數(shù)組元素下標的組元素下標的10倍,然后按正序和逆序輸出。倍,然后按正序和逆序輸出。010 2090807060504030正序輸出正
13、序輸出 0 10 20 30 40 50 60 70 80 90逆序輸出逆序輸出 90 80 70 60 50 40 30 20 10 0a a0 a1 a2 a3 a4 a5 a6 a7 a8 a9n第一步:定義含有第一步:定義含有10個整型數(shù)據(jù)元素的數(shù)組個整型數(shù)據(jù)元素的數(shù)組an第二步:為第二步:為a的的10個元素個元素a0、a1.a9分別賦值分別賦值n第三步:正序輸出,即輸出第三步:正序輸出,即輸出a0、a1.a9n第四步:逆序輸出,即輸出第四步:逆序輸出,即輸出a9、a8.a0 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串通過循環(huán),逐個處理數(shù)組元
14、素通過循環(huán),逐個處理數(shù)組元素;變量變量 i i 既做既做 數(shù)組下標,又做數(shù)組下標,又做 循環(huán)變量。循環(huán)變量。5.1.4 5.1.4 一維數(shù)組應用舉例一維數(shù)組應用舉例n int a10,i;n 對于對于i從從0到到9循環(huán)循環(huán) ai=10* *i;n 對于對于i從從0到到9循環(huán)循環(huán) printf(“%d“,ai);n 對于對于i從從9到到0循環(huán)循環(huán) printf(“%d“,ai);void main() int a10 ,i; for(i=0;i10;i+) /*賦值賦值*/ ai=i* *10; for(i=0;i=0;i-) /*逆序輸出逆序輸出*/ printf(%5d,ai); 5.1 一
15、維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串例例 5.2 用數(shù)組求用數(shù)組求Fibonacci數(shù)列前數(shù)列前20個數(shù)個數(shù)f0f1f2f3f4f5f19.11f19014523192355.1.4 5.1.4 一維數(shù)組應用舉例一維數(shù)組應用舉例1, 1, 2, 3, 5, 8, 13, f0=1f1=1fn=fn-1+fn-2 (n=2) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串void main( ) int i; int f 20 = 1, 1; /* 數(shù)組初始化數(shù)組初始化 */ for(i = 2; i 20; i+)
16、 f i = f i - 1 + f i - 2; /*計算數(shù)列并存到數(shù)組計算數(shù)列并存到數(shù)組*/ for(i = 0; i max) max=ai;nsum+=ai;nave=sum/10;n輸出最大值,總和,平均值輸出最大值,總和,平均值void main()int a10,i,max ; . . scanf(%d,&ai); max=a0; for(i=0;i10;i+) if(maxai) max=ai; . ; . ; 輸出輸出max ,sum,ave ; ,sum=0,avesum+=aiave=sum/10for(i=0;ia1a0a1,則交則交換;然后比較第二個數(shù)與第三個
17、數(shù);依次類推,直至第換;然后比較第二個數(shù)與第三個數(shù);依次類推,直至第n-1n-1個數(shù)和第個數(shù)和第n n個數(shù)比較為止個數(shù)比較為止第一趟冒泡排序,結(jié)果最大的第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個元素位置上數(shù)被安置在最后一個元素位置上。(2 2)對前)對前n-1n-1個數(shù)進行第二趟冒泡排序,結(jié)果使次大的數(shù)被個數(shù)進行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第安置在第n-1n-1個元素位置個元素位置。(3 3)重復上述過程,共經(jīng)過)重復上述過程,共經(jīng)過n-1n-1趟冒泡排序后,排序結(jié)束趟冒泡排序后,排序結(jié)束。 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串 3
18、 4 4冒泡排序過程冒泡排序過程a0a1a2a3 第一趟排序第一趟排序 1 3 2 1 3 2 4 4 第第 二趟排序二趟排序 2 1 3 4 第第 三趟排序三趟排序 1 2 3 4結(jié)果結(jié)果 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串main() int a10,i,j,t; for(i=0;i10;i+)/*輸入輸入*/ scanf(%d,&ai); printf(n); for( ;j=9;j+)/*排序排序*/ for(i=0; iai+1) t=ai; ai=ai+1; ai+1=t; for(i=0;i10;i+) /*輸出輸出*/
19、printf(%d ,ai);步驟步驟: :1.1. 輸入輸入: : for for循環(huán)輸入循環(huán)輸入1010個整個整數(shù)數(shù)2. 2. 處理處理: :排序排序 循環(huán)做循環(huán)做9 9次:次: 找出第找出第j j大數(shù)大數(shù)3. 3. 輸出輸出: : for for循環(huán)輸循環(huán)輸出出1010個整數(shù)個整數(shù) 例例5.4輸入輸入10個數(shù),對其進行從小到大排序個數(shù),對其進行從小到大排序找出第找出第j j大數(shù)大數(shù) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.1一維數(shù)組一維數(shù)組-應用舉例應用舉例n例例5.6輸入輸入10個數(shù),對其進行從小到大排序個數(shù),對其進行從小到大排序用選擇
20、法排序排序過程:排序過程:(1 1)首先通過)首先通過n-1n-1次比較,從次比較,從n n個數(shù)中找出最小的,個數(shù)中找出最小的, 將將它與第一個數(shù)交換它與第一個數(shù)交換。 第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個元第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個元素位置上素位置上。(2 2)再通過)再通過n-2n-2次比較,從剩余的次比較,從剩余的n-1n-1個數(shù)中找出個數(shù)中找出第二小第二小的的數(shù)數(shù),將它與第二個數(shù)交換,將它與第二個數(shù)交換。 第二趟選擇排序第二趟選擇排序, ,結(jié)果結(jié)果第二第二小的數(shù)被安置在第一個元小的數(shù)被安置在第一個元素位置上素位置上。(3 3)重復上述過程,共經(jīng)過)重復上述過程,共
21、經(jīng)過n-1n-1趟排序后,排序結(jié)束趟排序后,排序結(jié)束。 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串選擇法排序:輸入選擇法排序:輸入10個數(shù)個數(shù),將最小值與第一個數(shù)交換,將最小值與第一個數(shù)交換,輸出交換后的輸出交換后的10個數(shù)。個數(shù)。1)用)用k記錄最小值對應的下標記錄最小值對應的下標 k=1; for(j=2;j=10;j+) if(ajak) k=j; ak就是最小值就是最小值2)最小值與第一個數(shù)交換)最小值與第一個數(shù)交換 ak a1 x=a1; a1=ak; ak=x;5.1一維數(shù)組一維數(shù)組-應用舉例應用舉例 5.1 一維數(shù)組一維數(shù)組5.2 二維
22、數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串例例初始:初始: 49 38 65 97 76 13 27 k=1j=2i=11349一趟:一趟: 13 38 65 97 76 49 27 i=22738二趟:二趟: 13 27 65 97 76 49 38 三趟:三趟: 13 27 38 97 76 49 65 四趟:四趟: 13 27 38 49 76 97 65 五趟:五趟: 13 27 38 49 65 97 76 六趟:六趟: 13 27 38 49 65 76 97 k=6kkk=2j=3 j=4j=5 j=6j=7jjjjji表示趟數(shù)表示趟數(shù) k表每趟中最小數(shù)的下標表每趟中最小
23、數(shù)的下標a8 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串例例5.6輸入輸入10個數(shù),對其進行從小到大排序個數(shù),對其進行從小到大排序void main() int a11,i,j,k,x; for(i=1;i11;i+) scanf(%d,&ai); for(i=1;i10;i+) k=i; for(j=i+1;j=10;j+) if(ajak) k=j; if(i!=k) x=ai; ai=ak; ak=x; for(i=1;i11;i+) printf(%d ,ai);步驟步驟: :1.1.輸入輸入: : for for循環(huán)輸入循環(huán)輸入10
24、10個整數(shù)個整數(shù)2. 2. 排序處理排序處理: : 循環(huán)做循環(huán)做9 9次:次: 找出數(shù)中第找出數(shù)中第i i小數(shù)小數(shù)( (循環(huán)循環(huán)) )3. 3. 輸出輸出: : for for循環(huán)輸入循環(huán)輸入1010個整數(shù)個整數(shù)找出找出10個數(shù)中個數(shù)中第第i小數(shù)小數(shù) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組多維數(shù)組的空間想象多維數(shù)組的空間想象二維數(shù)組:二維數(shù)組: 一個表格或一個平面矩陣一個表格或一個平面矩陣一維數(shù)組:一維數(shù)組: 一列長表或一個向量一列長表或一個向量三維數(shù)組:三維數(shù)組: 三維空間的一個方陣三維空間的一個方陣 5.1 一維數(shù)組一
25、維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串n5個學生,個學生,5門課程,求每個學生的門課程,求每個學生的5門課程的平均門課程的平均成績,求每門課程的成績,求每門課程的5個同學的平均成績,如何處個同學的平均成績,如何處理?理?n int stu15,stu25,stu45;n思考:求每門課程的平均成績遇到什么問題?思考:求每門課程的平均成績遇到什么問題?5.2 二維數(shù)組二維數(shù)組問題的提出問題的提出 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組n1 二維數(shù)組的定義二維數(shù)組的定義n 定義方式:定義方式: 類型
26、名類型名 數(shù)組名數(shù)組名行長度行長度列長度列長度 例如:例如:int a23; int a34; float b52; int c234; int a3,4; ( ) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組n 1 二維數(shù)組的定義二維數(shù)組的定義n 存儲方式:按行存儲存儲方式:按行存儲int a23;01201內(nèi)存地址內(nèi)存地址200020002004200420082008201220122016201620202020a01a10a11a12a00a02a0a1a0a1每個元素每個元素ai又是一個包含又是一個包含3個元素的一維
27、數(shù)組個元素的一維數(shù)組a由由2個元素組成個元素組成a0,a1是行名是行名,每行首地址每行首地址 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組n1.先定義后使用先定義后使用 若有若有int a35 ;int a35 ; 則則a02a02表示引用二維數(shù)組中第表示引用二維數(shù)組中第0 0行第行第2 2列元素列元素n2.下標可以是整型常量或整型表達式下標可以是整型常量或整型表達式 stu2-12stu2-12n3.3.不要超下標引用不要超下標引用 定義定義 int a35 ; int a35 ; 引用引用a35a35是錯誤的!是錯誤的!2二
28、維數(shù)組的引用二維數(shù)組的引用 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組n3 二維數(shù)組的初始化二維數(shù)組的初始化 全部元素賦值全部元素賦值1.1.分行賦值分行賦值 int a23=1,2,3,4,5,6;int a23=1,2,3,4,5,6;2.2.按元素順序賦值按元素順序賦值 int a23=1,2,3,4,5,6;int a23=1,2,3,4,5,6;3.3.允許省略第一維長度允許省略第一維長度 int a 3=1,2,3,4,5,6;int a 3=1,2,3,4,5,6; 第一維長度為第一維長度為2 21 2 3 4
29、5 61 2 3 4 5 61 2 3 4 5 6 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組n3 3 二維數(shù)組的初始化二維數(shù)組的初始化部分元素賦值部分元素賦值1.1.分行賦值分行賦值 int a23=1,2,3,4;int a23=1,2,3,4;2.2.按元素存儲順序賦值按元素存儲順序賦值 int a23=1,2,3,4;int a23=1,2,3,4;3.3.允許省略第一維長度允許省略第一維長度 int a 3=1,2,3,4;int a 3=1,2,3,4; 第一維長度為第一維長度為2 2 1 2 3 4 1 2 3
30、4 1 2 3 4 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組n4 4 二維數(shù)組的輸入和輸出二維數(shù)組的輸入和輸出int a23,i,j;輸出第輸出第i行第行第j列列元素:元素:printf(“%d”,aij);輸出整個數(shù)組元素:輸出整個數(shù)組元素:for (i=0;i2;i+) for(j=0;j3;j+) printf(“%d”,aij);輸入第輸入第i行第行第j列元素:列元素:scanf(“%d”,&aij);輸入整個數(shù)組元素:輸入整個數(shù)組元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf
31、(“%d”,&aij); 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組應用舉例應用舉例n例例5.7 輸入兩個輸入兩個2*3的矩陣,計算并輸出兩個矩陣的矩陣,計算并輸出兩個矩陣的和。的和。#includemain() int a23,b23,sum23,i,j;/* 輸入數(shù)組輸入數(shù)組 a的元素的元素*/ for(i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij); 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串/* 輸入數(shù)組輸入數(shù)組 b的元素
32、的元素*/for(i=0;i2;i+) for(j=0;j3;j+) scanf(%d,&bij); /* 數(shù)組數(shù)組 求和求和*/ for(i=0;i2;i+) for(j=0;j3;j+) sumij=aij+bij; /* 數(shù)組數(shù)組 輸出輸出*/ for(i=0;i2;i+) for(j=0;j3;j+) printf(“%5d”,sumij); printf(n); 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組應用舉例應用舉例n例例5.8 求一個求一個4*4矩陣的主對角線元素之積矩陣的主對角線元素之積 5.1 一維
33、數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串int aNN; N是正整數(shù)是正整數(shù)數(shù)組元素數(shù)組元素 aij,i和和j的取值范圍的取值范圍0,N-1用二維數(shù)組用二維數(shù)組a表示表示N*N方陣時,對應關(guān)系方陣時,對應關(guān)系:a00 a01 a02a10 a11 a12a20 a21 a22方陣方陣 概念概念主對角線主對角線 i=j上三角上三角 i=j 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.2 二維數(shù)組二維數(shù)組應用舉例應用舉例n 例例5.8求一個求一個4*4矩陣的主對角線元素之積矩陣的主對角線元素之積#includemain
34、() int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j,s=1; for(i=0;i4;i+) for(j=0;j4;j+) if(i=j) s=s*aij; printf(s=%d,s); 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串5.3 字符數(shù)組和字符串字符數(shù)組和字符串n主要內(nèi)容:主要內(nèi)容:n理解字符串與字符數(shù)組的概念理解字符串與字符數(shù)組的概念n掌握字符串的輸入掌握字符串的輸入/輸出處理輸出處理n能夠使用字符串處理函數(shù)能夠使用字符串處理函數(shù) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3
35、字符數(shù)組和字符串字符數(shù)組和字符串5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符數(shù)組字符數(shù)組例例 char c10, ch34;n 1 字符數(shù)組的定義字符數(shù)組的定義n 2 字符數(shù)組的初始化字符數(shù)組的初始化n逐個字符賦值逐個字符賦值n用字符串常量用字符串常量 例例 char ch5=H,e,l,l,o;ch0Helloch1 ch2 ch3 ch4 例例 char ch6=“Hello”; char ch6=“Hello”; char ch =“Hello”;ch0Helloch1 ch2 ch3 ch40ch5 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串
36、n字符串字符串: :用一對雙引號括起來的字符序列用一對雙引號括起來的字符序列nC C中中無字符串變量,用字符數(shù)組處理字符串無字符串變量,用字符數(shù)組處理字符串n字符串結(jié)束標志:字符串結(jié)束標志:00“hello”hello”共共5 5個字符,在內(nèi)存占個字符,在內(nèi)存占6 6個字節(jié)個字節(jié),字符串長度字符串長度5 5 h e l l o 0h e l l o 0104 101 108 108 111 0104 101 108 108 111 0內(nèi)存存放字符內(nèi)存存放字符ASCIIASCII碼碼5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符串字符串 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)
37、組和字符串字符數(shù)組和字符串n字符串的輸入輸出字符串的輸入輸出n逐個字符逐個字符I/OI/O: %c%cn整個字符串整個字符串I/OI/O: %s%s例例 用用%c main() char str5; int i; for(i=0;i5;i+) scanf(“%c”, &stri); for(i=0;i5;i+) printf(“%c”, stri);例例 用用%s main() char str5; scanf(“%s”, str); printf(“%s”, str);用字符數(shù)組名用字符數(shù)組名, ,不要加不要加& &輸入串長度不要越界輸入串長度不要越界遇空格或回車結(jié)束
38、輸入遇空格或回車結(jié)束輸入自動加自動加00用字符數(shù)組名用字符數(shù)組名, ,遇遇00結(jié)束輸出結(jié)束輸出5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符串字符串 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串例例 main( ) char a5=H,e,l,l,o; printf(“%s”,a); 例例 main( ) char a =“Hello”; printf(“%s”,a); 結(jié)果:結(jié)果:Hello#-=* h h e l l oe l l o02314結(jié)果:Hello用“%s”輸出時,遇0結(jié)束5.3 字符數(shù)組和字符串字符數(shù)組和字符串例題例題 5.1 一維數(shù)組
39、一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串main() char a =h,e,l,0,l,o,0; printf(%s,a);輸出:輸出:hel h e l 0 l o 0數(shù)組中有多個數(shù)組中有多個00時時, ,遇第一個結(jié)束遇第一個結(jié)束5.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串例題例題 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串main() int i; char a5; scanf(%s,a); for(i=0;i5;i+) printf(%d,ai);運行情況:運行情況:(1 1)若輸入)若輸入 hel , he
40、l , 正常正常(2 2)若輸入)若輸入 hell , hell , 正常正常(3 3)若輸入)若輸入 hello , hello , 用用% %s s 輸出時,會出現(xiàn)問題輸出時,會出現(xiàn)問題 h e l 0 h e l l 0 h e l l o輸入字符串長度輸入字符串長度 數(shù)組維數(shù)數(shù)組維數(shù)5.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串例題例題 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串 H o w 0 a r e 0 y o u ? 0 #include main() char a15,b5,c5; scanf(%s%s%s,a,b,c); pr
41、intf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);scanfscanf中中% %s s輸入時輸入時, ,遇空格遇空格或回車結(jié)束或回車結(jié)束5.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串例題例題輸入:輸入:How are you?輸出:輸出:a=How b=are c=you?輸入:輸入:How are you?輸出:輸出:a=How 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串若準備將字符串若準備將字符串“This is a string.”This is a string.”記錄下來,
42、記錄下來,應該怎樣輸入?應該怎樣輸入?5.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串包含在頭文件包含在頭文件string.hstring.hu字符串輸出函數(shù)字符串輸出函數(shù)putsputs格式:格式:puts(puts(字符數(shù)組字符數(shù)組) )功能:向顯示器輸出字符串(輸出完,換行)功能:向顯示器輸出字符串(輸出完,換行)說明:字符數(shù)組必須以說明:字符數(shù)組必須以00結(jié)束結(jié)束u字符串輸入函數(shù)字符串輸入函數(shù)getsgets格式:格式:gets(gets(字符數(shù)組字符數(shù)組) )功能:從鍵盤輸入一以回車結(jié)束的字符串放
43、入字符數(shù)組中,功能:從鍵盤輸入一以回車結(jié)束的字符串放入字符數(shù)組中, 并自動加并自動加00說明:輸入串長度應小于字符數(shù)組維數(shù)說明:輸入串長度應小于字符數(shù)組維數(shù)5.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符串函數(shù)字符串函數(shù) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串包含在頭文件包含在頭文件string.hstring.hu字符串輸出函數(shù)字符串輸出函數(shù)puts(puts(字符數(shù)組字符數(shù)組) )u字符串輸入函數(shù)字符串輸入函數(shù)gets(字符數(shù)組字符數(shù)組)例例 #include main( ) char string80; printf(“Input a
44、string:”); gets(string); puts(string); 輸入輸入: How are you?輸出輸出: How are you ? 5.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符串函數(shù)字符串函數(shù) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串u字符串連接函數(shù)字符串連接函數(shù)strcatstrcat格式:格式:strcat(strcat(字符數(shù)組字符數(shù)組1,1,字符數(shù)組字符數(shù)組2)2)功能:把字符數(shù)組功能:把字符數(shù)組2 2連到字符數(shù)組連到字符數(shù)組1 1后面后面返值:返回字符數(shù)組返值:返回字符數(shù)組1 1的首地址的首地址說明:說明:字
45、符數(shù)組字符數(shù)組1 1必須足夠大必須足夠大 連接前連接前, ,兩串均以兩串均以00結(jié)束結(jié)束; ;連接后連接后, ,串串1010取消取消, , 新串最后加新串最后加00u字符串拷貝函數(shù)字符串拷貝函數(shù)strcpystrcpy格式:格式:strcpy(strcpy(字符數(shù)組字符數(shù)組1,1,字符串字符串2)2)功能:將字符串功能:將字符串2 2,拷貝到字符數(shù)組,拷貝到字符數(shù)組1 1中去中去返值:返回字符數(shù)組返值:返回字符數(shù)組1 1的首地址的首地址說明:說明:字符數(shù)組字符數(shù)組1 1必須足夠大必須足夠大 拷貝時拷貝時00一同拷貝一同拷貝 不能使用賦值語句為一個字符數(shù)組賦值不能使用賦值語句為一個字符數(shù)組賦值5
46、.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符串函數(shù)字符串函數(shù) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串#include #include void main() char des25, c = C+; char blank = , visual = visual; strcpy(des,visual); strcat(des, blank); strcat(des, c); printf(%sn, des);5.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符串函數(shù)字符串函數(shù)visual C+vsua0123456789il24.0vsua0
47、0123456789i24.lvsuaC+0123456789i024.l 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串u字符串比較函數(shù)字符串比較函數(shù)strcmp格式:格式:strcmp(字符串字符串1,字符串字符串2)功能:比較兩個字符串功能:比較兩個字符串比較規(guī)則:對兩串從左向右逐個字符比較(比較規(guī)則:對兩串從左向右逐個字符比較(ASCII碼),碼), 直到遇到不同字符或直到遇到不同字符或0為止為止返值:返回返值:返回int型整數(shù),型整數(shù),a. 若字符串若字符串1 字符串字符串2, 返回正整數(shù)返回正整數(shù) c. 若字符串若字符串1= 字符串字符串2,
48、 返回零返回零說明:字符串比較不能用說明:字符串比較不能用“=”,必須用必須用strcmpu字符串長度函數(shù)字符串長度函數(shù)strlen格式:格式:strlen(字符數(shù)組字符數(shù)組)功能:計算字符串長度功能:計算字符串長度返值:返回字符串實際長度,不包括返值:返回字符串實際長度,不包括0在內(nèi)在內(nèi)5.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符串函數(shù)字符串函數(shù) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串例例 對于以下字符串,對于以下字符串,strlen(s)的值為:的值為:(1)char s10=A,0,B,C,0,D;(2)char s =“tv0willn”;(3)char s =“x69082n”; 答案:答案:1 3 15.3 5.3 字符數(shù)組和字符串字符數(shù)組和字符串字符串函數(shù)字符串函數(shù) 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串 5.1 一維數(shù)組一維數(shù)組5.2 二維數(shù)組二維數(shù)組5.3字符數(shù)組和字符串字符數(shù)組和字符串#
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧石化職業(yè)技術(shù)學院單招職業(yè)技能考試題庫附答案詳解
- 安全員A證考試題型+答案(考點題)及參考答案詳解(能力提升)
- 計算機四級復習提分資料【必刷】附答案詳解
- 安職輔導員考試題及答案
- 工程項目物料成本控制方案
- 勞動合同管理培訓課件
- 企業(yè)法務考試題庫及答案
- 施工現(xiàn)場物料運輸優(yōu)化方案
- 未來五年乳鴿飼料企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 未來五年干制果品企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 國家級算力樞紐節(jié)點(東數(shù)西算)跨區(qū)域調(diào)度網(wǎng)絡與綠色節(jié)能數(shù)據(jù)中心建設(shè)規(guī)劃方案
- 近五年河北中考英語試題及答案2025
- 山西省臨汾市2025-2026年八年級上物理期末試卷(含答案)
- (2025年)員工安全培訓考試試題(含答案)
- GB/T 36132-2025綠色工廠評價通則
- 2025-2026學年北師大版八年級數(shù)學上冊期末復習卷(含答案)
- 2025年艾滋病培訓試題與答案(全文)
- 【二下數(shù)學】計算每日一練60天(口算豎式脫式應用題)
- 殘疾人服務與權(quán)益保護手冊(標準版)
- 2025年1月-12月時事政治歸納總結(jié)(備考必背)
- 云南師大附中2026屆高三高考適應性月考卷(六)歷史試卷(含答案及解析)
評論
0/150
提交評論