第6章一維數(shù)組與指針程序設(shè)計(甘玲)_第1頁
第6章一維數(shù)組與指針程序設(shè)計(甘玲)_第2頁
第6章一維數(shù)組與指針程序設(shè)計(甘玲)_第3頁
第6章一維數(shù)組與指針程序設(shè)計(甘玲)_第4頁
第6章一維數(shù)組與指針程序設(shè)計(甘玲)_第5頁
已閱讀5頁,還剩126頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第6章 一維數(shù)組與指針程序設(shè)計C語言程序設(shè)計語言程序設(shè)計2解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25本章內(nèi)容本章內(nèi)容最高分問題最高分問題1字符位置查找問題字符位置查找問題2變量值交換問題變量值交換問題3 一維數(shù)組及操作一維數(shù)組及操作 有序數(shù)組插入問題有序數(shù)組插入問題4指針的概念指針的概念 指針作函數(shù)參數(shù)指針作函數(shù)參數(shù) 字符數(shù)組與字符串字符數(shù)組與字符串字符串復(fù)制問題字符串復(fù)制問題5 字符串處理函數(shù)字符串處理函數(shù)指針與一維數(shù)組指針與一維數(shù)組3解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維

2、數(shù)組與指針程序設(shè)計2022-5-25最高分問題最高分問題v求兩個數(shù)或三個數(shù)的最大值和最小值問題,它也可求兩個數(shù)或三個數(shù)的最大值和最小值問題,它也可以理解為對以理解為對3個學(xué)生某門課程的成績進(jìn)行排序。個學(xué)生某門課程的成績進(jìn)行排序。v可以定義可以定義30個變量,然后編寫大量的比較大小的語個變量,然后編寫大量的比較大小的語句(比句(比3個變量比較大小復(fù)雜得多)實(shí)現(xiàn)對個變量比較大小復(fù)雜得多)實(shí)現(xiàn)對30個學(xué)生個學(xué)生的數(shù)學(xué)成績排名。的數(shù)學(xué)成績排名。v如果有如果有200名學(xué)生,定義名學(xué)生,定義200個整型變量就很不現(xiàn)個整型變量就很不現(xiàn)實(shí)。能不能用一種新的數(shù)據(jù)類型來表示這實(shí)。能不能用一種新的數(shù)據(jù)類型來表示這2

3、00名學(xué)生名學(xué)生的成績呢?下面我們就應(yīng)用新的數(shù)據(jù)類型來解決這個的成績呢?下面我們就應(yīng)用新的數(shù)據(jù)類型來解決這個問題。問題。例例6-1 輸入輸入30個學(xué)生的數(shù)學(xué)成績并輸出最高分。個學(xué)生的數(shù)學(xué)成績并輸出最高分。4解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25問題分析問題分析vC語言提供了利用基本數(shù)據(jù)類型構(gòu)造新的數(shù)據(jù)類型的機(jī)制,語言提供了利用基本數(shù)據(jù)類型構(gòu)造新的數(shù)據(jù)類型的機(jī)制,除了基本類型(整型、實(shí)型、字符型、枚舉類型)外,還引入除了基本類型(整型、實(shí)型、字符型、枚舉類型)外,還引入了數(shù)組數(shù)據(jù),使每個元素具有相同的數(shù)據(jù)類型,而每個

4、元素又了數(shù)組數(shù)據(jù),使每個元素具有相同的數(shù)據(jù)類型,而每個元素又相當(dāng)于一個變量,每個元素可以使用下標(biāo)來訪問。相當(dāng)于一個變量,每個元素可以使用下標(biāo)來訪問。v下面利用一維數(shù)組來完成例下面利用一維數(shù)組來完成例6-1的問題。的問題。v可以定義一個一維數(shù)組,對一維數(shù)組的每個元素進(jìn)行比較,可以定義一個一維數(shù)組,對一維數(shù)組的每個元素進(jìn)行比較,得到其最大值。得到其最大值。 5解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-1 實(shí)現(xiàn)代碼實(shí)現(xiàn)代碼/* LI6_1.c */#include int main() int a30,max,i;

5、/* 定義一維數(shù)組定義一維數(shù)組a */ for(i=0;i30;i+) scanf(%d,&ai); /* 給數(shù)組元素賦值給數(shù)組元素賦值 */ max=a0; for(i=0;imax) max=ai; /* 求最高分求最高分 */ printf(max=%dn,max); /* 輸出最高分輸出最高分 */return 0;定義具有定義具有30個元素的一個元素的一維數(shù)組維數(shù)組a按變量方式按變量方式輸入一維數(shù)輸入一維數(shù)組組a中的元中的元素值素值一維數(shù)組一維數(shù)組a中的每個元中的每個元素均按單個素均按單個變量處理變量處理v本例涉及到一維數(shù)組的定義、初始化、引用等知識點(diǎn)。本例涉及到一維數(shù)組的定義、初始

6、化、引用等知識點(diǎn)。6解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25一維數(shù)組一維數(shù)組 在程序設(shè)計中,常常需要處理大量同類型的相關(guān)數(shù)據(jù),如每個學(xué)生的成在程序設(shè)計中,常常需要處理大量同類型的相關(guān)數(shù)據(jù),如每個學(xué)生的成績記錄,多個相同類型數(shù)據(jù)的排序等。這類數(shù)據(jù)在計算機(jī)語言中可以通過數(shù)績記錄,多個相同類型數(shù)據(jù)的排序等。這類數(shù)據(jù)在計算機(jī)語言中可以通過數(shù)組來表示。所謂數(shù)組就是具有相同數(shù)據(jù)類型的有序集合。組來表示。所謂數(shù)組就是具有相同數(shù)據(jù)類型的有序集合。 在在C語言中,數(shù)組具有以下幾個特點(diǎn):語言中,數(shù)組具有以下幾個特點(diǎn): 數(shù)組的所有元素使用

7、一個共同的名字,稱為數(shù)組名,數(shù)組名使用標(biāo)識數(shù)組的所有元素使用一個共同的名字,稱為數(shù)組名,數(shù)組名使用標(biāo)識符來表示。每個數(shù)組元素的使用由數(shù)組的下標(biāo)來確定。符來表示。每個數(shù)組元素的使用由數(shù)組的下標(biāo)來確定。 數(shù)組元素的個數(shù)必須在定義時確定,程序中不可改變。數(shù)組元素的個數(shù)必須在定義時確定,程序中不可改變。 在在C語言中,數(shù)組下標(biāo)是從語言中,數(shù)組下標(biāo)是從0開始,到數(shù)組元素個數(shù)減開始,到數(shù)組元素個數(shù)減1結(jié)束的。結(jié)束的。 同一數(shù)組中的每一元素具有相同的數(shù)據(jù)類型(可以是基本類型或構(gòu)造同一數(shù)組中的每一元素具有相同的數(shù)據(jù)類型(可以是基本類型或構(gòu)造類型等)。類型等)。 同一數(shù)組在內(nèi)存中占據(jù)一段連續(xù)的存儲單元。同一數(shù)組

8、在內(nèi)存中占據(jù)一段連續(xù)的存儲單元。 數(shù)組中元素的作用相當(dāng)于簡單變量。數(shù)組中元素的作用相當(dāng)于簡單變量。 數(shù)組必須先定義后使用。數(shù)組必須先定義后使用。7解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25一維數(shù)組的定義一維數(shù)組的定義 一維數(shù)組是指只有一個下標(biāo)的數(shù)組元素所組成的數(shù)組。一維一維數(shù)組是指只有一個下標(biāo)的數(shù)組元素所組成的數(shù)組。一維數(shù)組的定義方式為:數(shù)組的定義方式為: 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名數(shù)組名 常量表達(dá)式常量表達(dá)式 ; 例如:例如:int a10; int a10; 它表示數(shù)組名為它表示數(shù)組名為a a,此數(shù)組有此數(shù)組有101

9、0個元素,個元素,分別為分別為a0a0、a1a1、a2a2、a3a3、a4a4、a5a5、a6a6、a7a7、a8a8、a9a9。 又如:存放又如:存放3030個學(xué)生的數(shù)學(xué)成績,用一維數(shù)組定義如下:個學(xué)生的數(shù)學(xué)成績,用一維數(shù)組定義如下:int grade30; int grade30; 其元素分別為:其元素分別為:grade0grade0,grade29grade29共共3030個。個。 注意:數(shù)組必須先定義,后使用。注意:數(shù)組必須先定義,后使用。8解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25一維數(shù)組的定義說明一維數(shù)組的

10、定義說明 數(shù)組名定名規(guī)則和變量名相同,遵循標(biāo)識符定名規(guī)則。它表示各數(shù)組元數(shù)組名定名規(guī)則和變量名相同,遵循標(biāo)識符定名規(guī)則。它表示各數(shù)組元素的統(tǒng)一名字素的統(tǒng)一名字, ,用以唯一標(biāo)識數(shù)組。用以唯一標(biāo)識數(shù)組。 數(shù)組名后是用方括號的常量表達(dá)式,不能用圓括號代替。數(shù)組名后是用方括號的常量表達(dá)式,不能用圓括號代替。 如如int a(20);int a(20);是錯誤的。是錯誤的。 常量表達(dá)式的值表示數(shù)組中所包含的元素的個數(shù),即數(shù)組的長度。常量表達(dá)式的值表示數(shù)組中所包含的元素的個數(shù),即數(shù)組的長度。 如如int a20;int a20;表示數(shù)組表示數(shù)組a a有有2020個元素,分別為個元素,分別為a0a0、a1

11、a1、a19a19。 注意不能使用數(shù)組元素注意不能使用數(shù)組元素a20a20。 常量表達(dá)式中可以包括常量和符號常量,不能包含變量。即在常量表達(dá)式中可以包括常量和符號常量,不能包含變量。即在C C語言中語言中不允許對數(shù)組進(jìn)行動態(tài)定義,數(shù)組的大小不會隨著程序運(yùn)行中的變化而改變。不允許對數(shù)組進(jìn)行動態(tài)定義,數(shù)組的大小不會隨著程序運(yùn)行中的變化而改變。 錯誤定義:錯誤定義:int n;scanf(“%d”,&n); float bn;int n;scanf(“%d”,&n); float bn;。 正確定義:正確定義:#define N 30 #define N 30 float bN; int i10;

12、float bN; int i10;。 類型說明符表示數(shù)組元素具有的數(shù)據(jù)類型,可以是類型說明符表示數(shù)組元素具有的數(shù)據(jù)類型,可以是intint、 shortshort、longlong、charchar、unsignedunsigned、floatfloat、doubledouble等。等。 相同類型的數(shù)組可以在同一個類型說明符下一起說明,互相間用相同類型的數(shù)組可以在同一個類型說明符下一起說明,互相間用“,”隔隔開。如:開。如:int a4,b10,c20;int a4,b10,c20;。9解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計202

13、2-5-25一維數(shù)組的初始化一維數(shù)組的初始化 數(shù)組在定義后,它所占有的存儲單元中的數(shù)組在定義后,它所占有的存儲單元中的值是不確定的,引用數(shù)組元素之前,必須保證值是不確定的,引用數(shù)組元素之前,必須保證數(shù)組的元素已經(jīng)被賦以確定的值。數(shù)組的元素已經(jīng)被賦以確定的值。 對數(shù)組元素的初始化可以用以下方法實(shí)現(xiàn):對數(shù)組元素的初始化可以用以下方法實(shí)現(xiàn): 通過賦值語句或輸入語句對數(shù)組中的元通過賦值語句或輸入語句對數(shù)組中的元素賦值。素賦值。 在數(shù)組定義時對數(shù)組中的元素賦值。對在數(shù)組定義時對數(shù)組中的元素賦值。對數(shù)組元素賦值的方法是從數(shù)組的第一個元素開數(shù)組元素賦值的方法是從數(shù)組的第一個元素開始依次給出初始表,表中各值之

14、間用逗號分開。始依次給出初始表,表中各值之間用逗號分開。一般格式為:一般格式為: static static = 如:如:int a5=1,3,259,-1,-10;int a5=1,3,259,-1,-10; static int b5=1,3,259,-1,-10; static int b5=1,3,259,-1,-10; char char word5=a,b,c,d,e;word5=a,b,c,d,e;a0=1內(nèi)存用戶數(shù)據(jù)區(qū)內(nèi)存用戶數(shù)據(jù)區(qū)a1=3a2=2591000100210041008a3=-1a4=-101006000000010000000011110110111111110

15、0000011000000000000001100000001111111111111111110解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25一維數(shù)組初始化說明一維數(shù)組初始化說明 是用逗號分隔的數(shù)據(jù)。是用逗號分隔的數(shù)據(jù)。 若對數(shù)組中的所有元素都賦初值,可不必指出元素個數(shù),即可以不指定若對數(shù)組中的所有元素都賦初值,可不必指出元素個數(shù),即可以不指定數(shù)組長度。數(shù)組長度。 如:如: int a=1,3,259,-1,-10; int a=1,3,259,-1,-10; 也表示數(shù)組也表示數(shù)組a a有有5 5個元素。它等價于:個元素

16、。它等價于: int a5=1,3,259,-1,-10; int a5=1,3,259,-1,-10; 也等價于也等價于 a0=1;a1=3;a2=259;a0=1;a1=3;a2=259; a3=-1;a4=-10 a3=-1;a4=-10。 而沒有給出數(shù)組長度的賦初值,即使后面每個元素的初值全是而沒有給出數(shù)組長度的賦初值,即使后面每個元素的初值全是0 0,也要寫,也要寫出來。出來。 如:如:int b=1,2,3,0,0,0; int b=1,2,3,0,0,0; 認(rèn)為是認(rèn)為是6 6個元素的數(shù)組,它等價于:個元素的數(shù)組,它等價于: int b6=1,2,3;int b6=1,2,3;。

17、中數(shù)據(jù)的類型必須與中數(shù)據(jù)的類型必須與 所指定的數(shù)據(jù)類型一致。所指定的數(shù)據(jù)類型一致。 在在C C語言中,數(shù)組元素的下標(biāo)值依次為語言中,數(shù)組元素的下標(biāo)值依次為0 0、1 1、2 2、,在,在n n個元素組成的一個元素組成的一維數(shù)組中,最后一個元素的下標(biāo)為維數(shù)組中,最后一個元素的下標(biāo)為n-1n-1。11解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25一維數(shù)組初始化說明一維數(shù)組初始化說明 C C語言規(guī)定對數(shù)組進(jìn)行置初值時,如果是靜態(tài)存儲語言規(guī)定對數(shù)組進(jìn)行置初值時,如果是靜態(tài)存儲(staticstatic為關(guān)鍵字)數(shù)組和外部存儲(為關(guān)

18、鍵字)數(shù)組和外部存儲(externextern)數(shù)組。在數(shù)組數(shù)組。在數(shù)組不賦初值時,系統(tǒng)會對所有數(shù)組元素自動賦以不賦初值時,系統(tǒng)會對所有數(shù)組元素自動賦以0 0值或值或00值。值。 如:如:static int a3; static int a3; 等價于等價于 static int static int a3=0,0,0; a3=0,0,0; 。 如果只定義如果只定義int a5;int a5;而不賦初值時,則各元素的值是不確而不賦初值時,則各元素的值是不確定的。定的。 對數(shù)組的全部元素都賦對數(shù)組的全部元素都賦0 0為初值,可以寫成:為初值,可以寫成: int a5=0,0,0,0,0; in

19、t a5=0,0,0,0,0; 而不能寫成:而不能寫成:int a5=0int a5=0* *5;5; 可以只給數(shù)組中的前面一部分元素賦初值,后面沒有賦初可以只給數(shù)組中的前面一部分元素賦初值,后面沒有賦初值的元素系統(tǒng)自動賦以值的元素系統(tǒng)自動賦以0 0值或值或00值。值。 如:如:int a5=1,2,3; int a5=1,2,3; 等價于:等價于:int a5=1,2,3,0,0; int a5=1,2,3,0,0; 也等價于:也等價于:int a=1,2,3,0,0;int a=1,2,3,0,0;12解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與

20、指針程序設(shè)計2022-5-25一維數(shù)組元素的引用一維數(shù)組元素的引用 數(shù)組的具體使用對象是其中的數(shù)組元素。數(shù)組的具體使用對象是其中的數(shù)組元素。在一個數(shù)組定義好后,在內(nèi)存中分配一組連在一個數(shù)組定義好后,在內(nèi)存中分配一組連續(xù)的存儲空間。如:續(xù)的存儲空間。如:int a5; int a5; 存儲方式見存儲方式見右圖。右圖。 數(shù)組元素的引用格式為:數(shù)組元素的引用格式為: 數(shù)組名數(shù)組名 下標(biāo)下標(biāo) ; 這里的下標(biāo)與數(shù)組定義時不同,不僅可這里的下標(biāo)與數(shù)組定義時不同,不僅可以是整型常量或整型表達(dá)式,還可以是含有以是整型常量或整型表達(dá)式,還可以是含有已賦值變量的整型表達(dá)式。數(shù)組的下標(biāo)從已賦值變量的整型表達(dá)式。數(shù)組

21、的下標(biāo)從0 0開開始算起。始算起。 如:如:b0=b5+b7-b2b0=b5+b7-b2* *33。 又如:又如:int i15; int n=3; int i15; int n=3; i0=-10; i5=6; in i0=-10; i5=6; in* *4=9;4=9;a0=1內(nèi)存用戶數(shù)據(jù)區(qū)內(nèi)存用戶數(shù)據(jù)區(qū)a1=3a2=2591000100210041008a3=-1a4=-1010060000000100000000111101101111111100000011000000000000001100000001111111111111111113解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版

22、)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25一維數(shù)組引用說明一維數(shù)組引用說明 數(shù)組元素和普通基本型變量一樣的使用,可出數(shù)組元素和普通基本型變量一樣的使用,可出現(xiàn)在現(xiàn)在C C語言表達(dá)式中的任何地方。語言表達(dá)式中的任何地方。 C C語言規(guī)定語言規(guī)定只能逐個引用數(shù)組元素,而不能一次只能逐個引用數(shù)組元素,而不能一次引用整個數(shù)組。引用整個數(shù)組。 C C語言不提供數(shù)組下標(biāo)越界的保護(hù),設(shè)計時要注語言不提供數(shù)組下標(biāo)越界的保護(hù),設(shè)計時要注意。意。 如:如:int b5; int b5; 只能有效引用只能有效引用b0b0、b1b1、b2b2、b3b3、b4b4。 如果程序中出現(xiàn)如果程

23、序中出現(xiàn)b5 b5 ,這時這時C C的編譯系統(tǒng)不會出的編譯系統(tǒng)不會出錯錯,但,但b5b5的值是不確定的。的值是不確定的。14解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-2 306-2 30個學(xué)生成績排序個學(xué)生成績排序首先定義一個具有首先定義一個具有30個元素的一維數(shù)組,然后對個元素的一維數(shù)組,然后對30個元素進(jìn)行序排列。排個元素進(jìn)行序排列。排序方法有很多種,如冒泡法、序方法有很多種,如冒泡法、 交換法、選擇法等。交換法、選擇法等。本例采用冒泡法(也稱起泡法)排序。本例采用冒泡法(也稱起泡法)排序。冒泡法的思想是:

24、將相鄰的兩個數(shù)進(jìn)行比較,將小的調(diào)到前頭。冒泡法的思想是:將相鄰的兩個數(shù)進(jìn)行比較,將小的調(diào)到前頭。冒泡法的排序過程為:冒泡法的排序過程為:比較第一個數(shù)與第二個數(shù),若為逆序比較第一個數(shù)與第二個數(shù),若為逆序a0a1,則交換;然后比較第,則交換;然后比較第二個數(shù)與第三個數(shù);依次類推,直至第二個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第個數(shù)和第n個數(shù)比較為止個數(shù)比較為止第第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個元素位置上;一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個元素位置上;對前對前n-1個數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第個數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個元個元

25、素位置;素位置;重復(fù)上述過程,共經(jīng)過重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束。趟冒泡排序后,排序結(jié)束。冒泡法在第一趟比較中要進(jìn)行冒泡法在第一趟比較中要進(jìn)行n-1次兩兩比較,在第次兩兩比較,在第j趟比較中要進(jìn)行趟比較中要進(jìn)行n-j次次比較。比較。15解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-259854208954208594208549208542908 85 54 42 20 09 9第第1 1次次第第2 2次次第第3 3次次第第4 4次次第第5 5次次結(jié)結(jié)果果第第1趟趟比較比較16解析解析C程序設(shè)計(第程序設(shè)計

26、(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-258 85 54 42 20 0第第1 1次次5 58 84 42 20 0第第2 2次次5 54 48 82 20 0第第3 3次次5 54 42 28 80 0第第4 4次次5 54 42 20 08 8結(jié)結(jié)果果第第2 2趟比較趟比較17解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-26-2程序程序/*LI6_2.c*/#include #define N 30void main() int aN,i,j,t; printf(

27、Input %d score:n,N); for(i=0;iN;i+) scanf(%d,&ai); /* 輸入成績輸入成績 */ printf(n); /* 冒泡法排序冒泡法排序 */ for(j=0;jN-1;j+) for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t; /* 交換器交換器 */ /* 輸出數(shù)據(jù)輸出數(shù)據(jù) */ printf(The sorted score:n); for(i=0;iN;i+) if(i%15=0) printf(n); printf(%4d ,ai); /* 排序后輸出成績排序后輸出成績 */ printf(n);18解析解析C程序設(shè)

28、計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25關(guān)鍵代碼(升序)關(guān)鍵代碼(升序)/* 冒泡法排序冒泡法排序 */ for(j=0;jN-1;j+) for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t; 19解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25冒泡法排序冒泡法排序降序降序20解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25冒泡法排序冒泡法排序降序降序21解析解析C程序設(shè)計

29、(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25關(guān)鍵代碼(降序)關(guān)鍵代碼(降序)/* 交換法排序交換法排序 */ for(i=0;i=N-2;i+) for(j=i+1;j=N-1;j+) if(aiaj) t=ai; ai=aj; aj=t; 22解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-36-3 選擇法排序選擇法排序用選擇法對用選擇法對30個成績按升序排列。個成績按升序排列?!痉治龇治觥窟x擇法的思想是:將第選擇法的思想是:將第1個數(shù)與后面的所有數(shù)進(jìn)行比較,

30、記錄個數(shù)與后面的所有數(shù)進(jìn)行比較,記錄最小值的下標(biāo),最后再將最小值與第最小值的下標(biāo),最后再將最小值與第1個數(shù)交換;以此類推,個數(shù)交換;以此類推,對剩余的數(shù)進(jìn)行排序。對剩余的數(shù)進(jìn)行排序。選擇法的排序過程為:選擇法的排序過程為:首先通過首先通過n-1次比較,從次比較,從n個數(shù)中找出最小值的下標(biāo),通過個數(shù)中找出最小值的下標(biāo),通過下標(biāo)找到對應(yīng)的元素并與第下標(biāo)找到對應(yīng)的元素并與第1個數(shù)交換個數(shù)交換第一趟選擇排序,第一趟選擇排序,結(jié)果最小的數(shù)被安置在第結(jié)果最小的數(shù)被安置在第1個元素位置上。個元素位置上。再通過再通過n-2次比較,從剩余的次比較,從剩余的n-1個數(shù)中找出次小的數(shù)據(jù)下個數(shù)中找出次小的數(shù)據(jù)下標(biāo),將

31、它與第標(biāo),將它與第2個數(shù)交換個數(shù)交換第二趟選擇排序。第二趟選擇排序。重復(fù)上述過程,共經(jīng)過重復(fù)上述過程,共經(jīng)過n-1趟排序后,排序結(jié)束。趟排序后,排序結(jié)束。23解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-3程序程序/*LI6_3.c*/#include #define N 30int main() int aN,i,j,k,t; printf(Input %d numbers:n,N); for(i=0;iN;i+) scanf(%d,&ai); /* 使用使用a1到到a10這這10個數(shù),因此個數(shù),因此i從從1開始

32、開始 */ printf(n); /* 選擇法排序選擇法排序 */ for(i=0;iN-1;i+) k=i; for(j=i+1;jN;j+) if(ajak) k=j; /* 記錄最小值的下標(biāo)記錄最小值的下標(biāo) */ if(i!=k) /* 如果最小值不是第一個比較的數(shù),就交換如果最小值不是第一個比較的數(shù),就交換 */ t=ai; ai=ak; ak=t; /* 交換兩個元素的值交換兩個元素的值 */ /* 輸出數(shù)據(jù)輸出數(shù)據(jù) */ printf(The sorted numbers:n); for(i=0;iN;i+) printf(%d ,ai); return 0;24解析解析C程序設(shè)計

33、(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25選擇法排序(降序)選擇法排序(降序)k=1k=2k=0k=125解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25選擇法排序(降序)選擇法排序(降序)k=3k=4k=3k=426解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25關(guān)鍵代碼(降序)關(guān)鍵代碼(降序)/* 選擇法排序(降序)選擇法排序(降序) */ for(i=0;iN-1;i+) k=i; for(j

34、=i+1;jak) k=j; /* 記錄最大值的下標(biāo)記錄最大值的下標(biāo) */ if(i!=k) /* 如果最大值不是第一個比較的數(shù),就交換如果最大值不是第一個比較的數(shù),就交換 */ t=ai; ai=ak; ak=t; /* 交換兩個元素的值交換兩個元素的值 */ 27解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-4 6-4 斐波那契(斐波那契(FibonacciFibonacci)數(shù)列為:)數(shù)列為:1 1,1 1,2 2,3 3,5 5,8 8,1313,2121,。 /*LI6_4.c*/#include int

35、 main() long i,f40=1,1; for(i=2;i40;i+) fi=fi-2+fi-1; for(i=0;i40;i+) if(i%4=0) printf(n); printf(%12ld,fi); return(0);f0=1,f1=1for i=0 to 39輸出:fifor i=2 to 39fi=fi-1+fi-2)3(2 1)2(12) 1(1 1 nnFnFnFnFnF舉一反三舉一反三28解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-56-5:查找一個數(shù)在數(shù)組中的位置:查找一個數(shù)在數(shù)組

36、中的位置 【分析分析】對于一個無序的數(shù)組,要在里面查找一個數(shù)的話,有對于一個無序的數(shù)組,要在里面查找一個數(shù)的話,有兩種方式:兩種方式:v一種是直接使用順序查找法查詢數(shù)據(jù);一種是直接使用順序查找法查詢數(shù)據(jù);v另一種方法是先排序,再用折半查找法(即二分法)另一種方法是先排序,再用折半查找法(即二分法)等查找。等查找。v本例中是一組無序數(shù)據(jù),可以采用順序查找法。本例中是一組無序數(shù)據(jù),可以采用順序查找法。v順序查找法的基本思想就是從頭到尾依次比較,直順序查找法的基本思想就是從頭到尾依次比較,直到找到所要的數(shù)為止。到找到所要的數(shù)為止。29解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與

37、指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25順序查找演示順序查找演示哈,找到了!30解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-56-5程序程序/*LI6_5.c*/#include #define N 20void main() int aN,i,j=-1,b; printf(Input %d numbers:n,N); for(i=0;i=N-1;i+) scanf(%d,&ai); printf(n); printf(Input other numbers:n,N); scanf(%d,&b); /

38、* 順序查找法順序查找法 */ for(i=0;i=N-1;i+) if(ai=b) j=i; /* 記錄所找到的數(shù)的位置記錄所找到的數(shù)的位置 */ break; /* 找到該數(shù)后退出循環(huán)找到該數(shù)后退出循環(huán) */ /* 輸出數(shù)據(jù)的位置輸出數(shù)據(jù)的位置 */ if(j=-1) printf(數(shù)組中值為數(shù)組中值為 %d 的數(shù)據(jù)沒有找到。的數(shù)據(jù)沒有找到。n,b); else printf(值為值為 %d 的數(shù)據(jù)是數(shù)組中的第的數(shù)據(jù)是數(shù)組中的第 %d 個元素。個元素。n,b,j+1);31解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25

39、思考題思考題例例6-5查找的是一個整數(shù)在整型數(shù)組中查找的是一個整數(shù)在整型數(shù)組中的位置,那么,對于實(shí)型數(shù)據(jù)和字符型的位置,那么,對于實(shí)型數(shù)據(jù)和字符型數(shù)據(jù)如何查找呢?數(shù)據(jù)如何查找呢?32解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25查找字符位置問題查找字符位置問題在例在例6-56-5中介紹了在整數(shù)數(shù)組中查找一個整數(shù)中介紹了在整數(shù)數(shù)組中查找一個整數(shù)的位置,如果數(shù)組元素是字符數(shù)據(jù)又怎么處理的位置,如果數(shù)組元素是字符數(shù)據(jù)又怎么處理呢?比如要在一串字符呢?比如要在一串字符“abc123defg456h”abc123defg456h”中

40、中要查找字符要查找字符“d”d”的位置。的位置。例例6-66-6:查找某個字符在一個字符串中的位置。:查找某個字符在一個字符串中的位置。33解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25問題分析問題分析實(shí)際上,對于數(shù)組來講,每個元素只能是基本類型中的一種,實(shí)際上,對于數(shù)組來講,每個元素只能是基本類型中的一種,當(dāng)數(shù)組元素是字符型數(shù)據(jù)時,稱該數(shù)組為當(dāng)數(shù)組元素是字符型數(shù)據(jù)時,稱該數(shù)組為字符數(shù)組字符數(shù)組。要完成。要完成在一串字符中查找一個字符,只需要將例在一串字符中查找一個字符,只需要將例6-56-5中的數(shù)組中的數(shù)組a a和變和變

41、量量b b定義成字符型數(shù)據(jù),而字符定義成字符型數(shù)據(jù),而字符aa賦給賦給a0a0、字符、字符bb賦賦給給a1a1、hh賦給字符賦給字符a13a13等,其它代碼稍作改動等,其它代碼稍作改動即可。即可。對于字符數(shù)組來講,如果最后一個元素是空字符對于字符數(shù)組來講,如果最后一個元素是空字符00,這,這個字符數(shù)組就稱為個字符數(shù)組就稱為字符串字符串,則該字符數(shù)組的初始化、引用等,則該字符數(shù)組的初始化、引用等方法均可以不同于一般的數(shù)組。方法均可以不同于一般的數(shù)組。這里將使用字符串知識解決例這里將使用字符串知識解決例6-66-6的問題。的問題。34解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組

42、與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-66-6程序(折半法查找)程序(折半法查找)/* LI6_6.c */#include #define N 12int main() char aN=adfgikmnprs,c; /* 定義字符數(shù)組,并賦有序字符序列定義字符數(shù)組,并賦有序字符序列 */ int top,bot,mid; /* top-開始字符位置,開始字符位置,bot-結(jié)束字符位置,結(jié)束字符位置,mid-中間字符位置中間字符位置 */ printf(Input a character: ); scanf(%c,&c); /* 輸入要查找的字符輸入要查找的字符 */

43、top=0; bot=N-2; /* 字符串最后一個字符為空字符,有效字符為字符串最后一個字符為空字符,有效字符為N-1個個 */ for(;top=bot;) mid=(top+bot)/2; if(amid=c) printf(The position is %dn,mid+1); /* 輸出位置序號輸出位置序號 */ break; else if(amidbot) printf(Not found.n); return 0;字符數(shù)組,字符數(shù)組,并賦字符串并賦字符串常量常量單個引用字單個引用字符數(shù)組中的符數(shù)組中的一個元素一個元素本例使用了字符數(shù)組、字符串等知識點(diǎn)本例使用了字符數(shù)組、字符串等

44、知識點(diǎn)35解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25字符串字符串要完整理解字符串的含義,必須從三個方面進(jìn)行:要完整理解字符串的含義,必須從三個方面進(jìn)行:v作為字符數(shù)組;作為字符數(shù)組;v作為指向一串字符的指針;作為指向一串字符的指針;v作為具有整體概念的完整實(shí)體。作為具有整體概念的完整實(shí)體。字符數(shù)組的定義方法與一般的數(shù)組定義方法類似。如:字符數(shù)組的定義方法與一般的數(shù)組定義方法類似。如: 一維字符數(shù)組定義:一維字符數(shù)組定義:char a10,b20char a10,b20;注意:注意:字符數(shù)組的每一元素存放一個字符。字符數(shù)

45、組字符數(shù)組的每一元素存放一個字符。字符數(shù)組a a可存放可存放1010個字個字符,字符數(shù)組符,字符數(shù)組b b可存放可存放2020個字符。個字符。由于字符數(shù)組大多是以字符串的方式出現(xiàn),而字符串在由于字符數(shù)組大多是以字符串的方式出現(xiàn),而字符串在C C語言語言中規(guī)定用一個中規(guī)定用一個“0”0”字符為結(jié)束標(biāo)志符,因此,在定義這類數(shù)組字符為結(jié)束標(biāo)志符,因此,在定義這類數(shù)組長度時必須比實(shí)際字符多一個元素的長度。長度時必須比實(shí)際字符多一個元素的長度。36解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25字符數(shù)組的初始化字符數(shù)組的初始化兩種方式

46、:兩種方式:v 用字符型數(shù)據(jù)對數(shù)組各元素初始化用字符型數(shù)據(jù)對數(shù)組各元素初始化 char a5=a,b,c,d,e; 字符數(shù)組字符數(shù)組 char a= a,b,c,d,e; 與上面等價與上面等價 char b6 = C,h,i,n,a,0; 字符串字符串 char b6 = C,h,i,n,a; 與上面等價與上面等價v 用字符串常量直接對數(shù)組初始化用字符串常量直接對數(shù)組初始化 char a6 = China; char b6 = China; char c= I am happy; char d= I am happy;37解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程

47、序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25字符數(shù)組的引用字符數(shù)組的引用 對于一般數(shù)組元素的引用,只能逐個引用數(shù)組對于一般數(shù)組元素的引用,只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組,而對字符串?dāng)?shù)組除元素而不能一次引用整個數(shù)組,而對字符串?dāng)?shù)組除外??梢詥蝹€引用,也可以一次引用一個字符串。外??梢詥蝹€引用,也可以一次引用一個字符串。 逐個引用字符串中的單個字符。逐個引用字符串中的單個字符。 如:如:c2=a+2; c0=c2+3; c2=a+2; c0=c2+3; 等。等。 將字符數(shù)組作為字符串來處理。將字符數(shù)組作為字符串來處理。 在一次引用整個字符串?dāng)?shù)組時,只需使用數(shù)組在一次引用整個字符串?dāng)?shù)組

48、時,只需使用數(shù)組名即可。在遇到字符名即可。在遇到字符00時,表示整個字符數(shù)組時,表示整個字符數(shù)組( (字符串字符串) )結(jié)束。結(jié)束。如:如:char a=“china”; char a=“china”; printf(“%sn”,a); printf(“%sn”,a); 其結(jié)果為:其結(jié)果為:china china 。38解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25字符數(shù)組的輸入輸出字符數(shù)組的輸入輸出逐個字符輸入輸出,用格式符逐個字符輸入輸出,用格式符“%c”%c”進(jìn)行。進(jìn)行。 char c6;char c6; scanf

49、(“%c”,&c1); scanf(“%c”,&c1); printf(“%c”,c1); printf(“%c”,c1); 整個字符串的輸入輸出,用格式符整個字符串的輸入輸出,用格式符“%s”%s”進(jìn)進(jìn)行。行。 char c6; char c6; scanf(“%s”,c); scanf(“%s”,c); printf(“%s”,c); printf(“%s”,c);39解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25字符數(shù)組輸入輸出說明字符數(shù)組輸入輸出說明v 使用使用scanf輸入字符串時,輸入項(xiàng)是字符數(shù)組名,它本身就輸

50、入字符串時,輸入項(xiàng)是字符數(shù)組名,它本身就是地址,因此在引用是地址,因此在引用c時不能加地址符時不能加地址符&。v 使用使用scanf輸入字符串時,系統(tǒng)自動在后面加一個輸入字符串時,系統(tǒng)自動在后面加一個0字字符,因此鍵盤輸入的字符最多不超過符,因此鍵盤輸入的字符最多不超過“數(shù)組長度數(shù)組長度-1”個字符。個字符。v 如果利用一個如果利用一個scanf輸入多個字符串,則以空格分開。因此,輸入多個字符串,則以空格分開。因此,在使用在使用scanf輸入時,不能輸入含空格的字符串。輸入時,不能輸入含空格的字符串。v 輸出字符不顯示輸出字符不顯示0。v 用用printf的的“%s”輸出字符時,輸出項(xiàng)只能是數(shù)

51、組名。輸出字符時,輸出項(xiàng)只能是數(shù)組名。v 當(dāng)數(shù)組長度大于字符串長度時,也只輸出到第一個遇當(dāng)數(shù)組長度大于字符串長度時,也只輸出到第一個遇0結(jié)束。結(jié)束。v 由于由于C語言用一維數(shù)組存放字符串,而且允許用數(shù)組名進(jìn)行語言用一維數(shù)組存放字符串,而且允許用數(shù)組名進(jìn)行輸入輸出一個字符串,因此一維字符數(shù)組相當(dāng)于輸入輸出一個字符串,因此一維字符數(shù)組相當(dāng)于“字符串變字符串變量量”。How0How000How0 40解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25字符數(shù)組與字符串的區(qū)別字符數(shù)組與字符串的區(qū)別v字符數(shù)組作為數(shù)組類型中的一種,它具有數(shù)

52、組變量字符數(shù)組作為數(shù)組類型中的一種,它具有數(shù)組變量的共性,可以用來存放和處理數(shù)值數(shù)據(jù),并對數(shù)組的共性,可以用來存放和處理數(shù)值數(shù)據(jù),并對數(shù)組元素進(jìn)行操作;字符串一般都不用來存放和處理數(shù)元素進(jìn)行操作;字符串一般都不用來存放和處理數(shù)值數(shù)據(jù),并且一般是對字符串整體進(jìn)行操作。值數(shù)據(jù),并且一般是對字符串整體進(jìn)行操作。v字符數(shù)組用來存放和處理字符數(shù)組且不加結(jié)束標(biāo)志字符數(shù)組用來存放和處理字符數(shù)組且不加結(jié)束標(biāo)志符符0時,則在程序中只可能逐個引用字符數(shù)組時,則在程序中只可能逐個引用字符數(shù)組中的各個字符,而不能一次引用整個字符數(shù)組。而中的各個字符,而不能一次引用整個字符數(shù)組。而字符串則可以對其引用整個數(shù)組。其操作的

53、方式,字符串則可以對其引用整個數(shù)組。其操作的方式,一個是數(shù)組元素,另一個是數(shù)組名。一個是數(shù)組元素,另一個是數(shù)組名。41解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-8 回文數(shù)問題。所謂回文數(shù)問題。所謂“回文數(shù)回文數(shù)”是指正讀反讀都是指正讀反讀都是相同的數(shù),如:是相同的數(shù),如:123454321?!痉治龇治觥靠梢远x一個字符串,只需要判斷第一個字符和最后可以定義一個字符串,只需要判斷第一個字符和最后一個字符是否相同,第二個字符和倒數(shù)第二個字符是一個字符是否相同,第二個字符和倒數(shù)第二個字符是否相同,以此類推即可。如果有

54、一個不相同,則不是否相同,以此類推即可。如果有一個不相同,則不是“回文數(shù)回文數(shù)”。當(dāng)字符串長度為奇數(shù)時,中間一個數(shù)不。當(dāng)字符串長度為奇數(shù)時,中間一個數(shù)不用比較。用比較。舉一反三舉一反三42解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-8程序程序/* LI6_8.c */#include #include int main() int i,l,flag=1; char a20; printf(Input a string: ); scanf(%s,a); /* 輸入回文數(shù)存入字符串輸入回文數(shù)存入字符串a(chǎn)中中 */ l

55、=strlen(a); /* strlen()是求字符串長度的函數(shù),詳見是求字符串長度的函數(shù),詳見6.5節(jié)節(jié) */ for(i=0; il/2-1; i+) if(ai!=al-i-1) /* 用循環(huán)方式判斷是否為用循環(huán)方式判斷是否為“回文數(shù)回文數(shù)” */ flag=0; /* 如果不等就不是如果不等就不是“回文數(shù)回文數(shù)”,不再判斷,不再判斷 */ break; if(flag) /* 輸出是否為回文數(shù)的結(jié)果輸出是否為回文數(shù)的結(jié)果 */ printf(n %s is palindrome!n,a); else printf(n %s isnt palindrome!n,a); return 0

56、;43解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-9 復(fù)制字符串問題復(fù)制字符串問題將字符串將字符串a(chǎn)復(fù)制為字符串復(fù)制為字符串b?!痉治龇治觥繌?fù)制字符串就是將一個字符串的每個位置的字復(fù)制字符串就是將一個字符串的每個位置的字符復(fù)制給另一個字符數(shù)組變量的相應(yīng)位置上,符復(fù)制給另一個字符數(shù)組變量的相應(yīng)位置上,并給字符數(shù)組的最后一位賦值字符串結(jié)束符并給字符數(shù)組的最后一位賦值字符串結(jié)束符0。復(fù)制字符串的方法有兩種,一種是采用循環(huán),復(fù)制字符串的方法有兩種,一種是采用循環(huán),一種是使用字符串處理函數(shù)。一種是使用字符串處理函數(shù)。本例使

57、用循環(huán)編程的方式完成。本例使用循環(huán)編程的方式完成。44解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25例例6-9程序程序/*LI6_9.c*/#include int main() int i; char a20,b20; /* 輸入字符串輸入字符串a(chǎn) */ printf(Input a string: ); scanf(%s,a); /* 用循環(huán)方式復(fù)制字符串用循環(huán)方式復(fù)制字符串 */ for(i=0;ai!=0;i+) bi=ai; bi=0; /* b字符數(shù)組最后一個字符應(yīng)為字符數(shù)組最后一個字符應(yīng)為0變成字符串變成字符

58、串 */ /* 輸出字符串輸出字符串a(chǎn)和和b */ printf(a string: %sn,a); printf(b string: %sn,b); return(0);45解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25思考題思考題v前面講過,理解字符串還應(yīng)該從前面講過,理解字符串還應(yīng)該從“作為指向一串字作為指向一串字符的指針符的指針”的角度來看。的角度來看。v那么,怎樣用地址來表示字符數(shù)組及其每個元素呢?那么,怎樣用地址來表示字符數(shù)組及其每個元素呢?46解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與

59、指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25變量值交換問題變量值交換問題前面講過,交換兩個變量值的方式有多種:前面講過,交換兩個變量值的方式有多種:v通過主函數(shù)通過主函數(shù)main完成交換;完成交換;v在在main函數(shù)中調(diào)用交換函數(shù)函數(shù)中調(diào)用交換函數(shù)swap(值傳遞參數(shù));(值傳遞參數(shù));v通過全局變量,在通過全局變量,在main函數(shù)中調(diào)用交換函數(shù)函數(shù)中調(diào)用交換函數(shù)swap。第一種方式:沒有模塊化程序設(shè)計的思想。第一種方式:沒有模塊化程序設(shè)計的思想。第二種方式:在第二種方式:在swap中交換了,但在中交換了,但在main函數(shù)中未交換。函數(shù)中未交換。第三種方式:建議不使用全局變量。第三種方

60、式:建議不使用全局變量。那么,在函數(shù)中交換后如何傳回主調(diào)函數(shù)呢?那么,在函數(shù)中交換后如何傳回主調(diào)函數(shù)呢?例例6-10 用函數(shù)實(shí)現(xiàn)兩個變量值的交換,使其在主調(diào)函數(shù)和被用函數(shù)實(shí)現(xiàn)兩個變量值的交換,使其在主調(diào)函數(shù)和被調(diào)函數(shù)中的值一致。調(diào)函數(shù)中的值一致。47解析解析C程序設(shè)計(第程序設(shè)計(第2版)第版)第6章章 一維數(shù)組與指針程序設(shè)計一維數(shù)組與指針程序設(shè)計2022-5-25問題分析問題分析變量的值始終存放在內(nèi)存單元中,如果要交換兩個變量變量的值始終存放在內(nèi)存單元中,如果要交換兩個變量的值,只需要交換這兩個變量對應(yīng)的存儲單元的值。的值,只需要交換這兩個變量對應(yīng)的存儲單元的值。如果主調(diào)函數(shù)與被調(diào)函數(shù)中所要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論