第6章-利用數(shù)組處理批量數(shù)據(jù)(白色底板)_第1頁
第6章-利用數(shù)組處理批量數(shù)據(jù)(白色底板)_第2頁
第6章-利用數(shù)組處理批量數(shù)據(jù)(白色底板)_第3頁
第6章-利用數(shù)組處理批量數(shù)據(jù)(白色底板)_第4頁
第6章-利用數(shù)組處理批量數(shù)據(jù)(白色底板)_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、前幾章前幾章使用的變量都屬于使用的變量都屬于基本類型基本類型,例如整型、字符型、浮點型數(shù)據(jù),這例如整型、字符型、浮點型數(shù)據(jù),這些都是簡單的數(shù)據(jù)類型。些都是簡單的數(shù)據(jù)類型。對于有些數(shù)據(jù),只用簡單的數(shù)據(jù)類型對于有些數(shù)據(jù),只用簡單的數(shù)據(jù)類型是不夠的,是不夠的,難以難以反映出數(shù)據(jù)的反映出數(shù)據(jù)的特點特點,也難以有效地進行處理。也難以有效地進行處理。如果有如果有1000名名同同學(xué)學(xué),每個每個同學(xué)同學(xué)有一有一個成績,需要求這個成績,需要求這1000名名同學(xué)同學(xué)的平的平均成績。均成績。用用s1,s2,s3,s1000表示每個同學(xué)表示每個同學(xué)的成績,能體現(xiàn)的成績,能體現(xiàn)內(nèi)在聯(lián)系內(nèi)在聯(lián)系。C語言用方括號中的數(shù)字表

2、示下標,語言用方括號中的數(shù)字表示下標,如用如用s15表示表示數(shù)組名數(shù)組名數(shù)組是一組數(shù)組是一組有序數(shù)據(jù)的集合有序數(shù)據(jù)的集合。數(shù)組中。數(shù)組中各數(shù)據(jù)的排列是有一定規(guī)律的,下標各數(shù)據(jù)的排列是有一定規(guī)律的,下標代表數(shù)據(jù)在數(shù)組中的序號代表數(shù)據(jù)在數(shù)組中的序號用一個用一個數(shù)組名數(shù)組名和和下標下標惟一確定數(shù)組中惟一確定數(shù)組中的元素的元素數(shù)組中的每一個元素都屬于數(shù)組中的每一個元素都屬于同一個數(shù)同一個數(shù)據(jù)類型據(jù)類型6.1 怎樣定義和引用一維數(shù)組怎樣定義和引用一維數(shù)組6.2 怎樣定義和引用二維數(shù)組怎樣定義和引用二維數(shù)組6.1.1 怎樣定義一維數(shù)組怎樣定義一維數(shù)組6.1.2 怎樣引用一維數(shù)組元素怎樣引用一維數(shù)組元素6.

3、1.3 一維數(shù)組的初始化一維數(shù)組的初始化6.1.4 一維數(shù)組程序舉例一維數(shù)組程序舉例一維數(shù)組是數(shù)組中最簡單的一維數(shù)組是數(shù)組中最簡單的它的元素只需要用數(shù)組名加一個下它的元素只需要用數(shù)組名加一個下標,就能惟一確定標,就能惟一確定要使用數(shù)組,必須在程序中先定義要使用數(shù)組,必須在程序中先定義數(shù)組數(shù)組定義一維數(shù)組的一般形式為:定義一維數(shù)組的一般形式為: 類型符類型符 數(shù)組名數(shù)組名常量表達式常量表達式;數(shù)組名的命名規(guī)則和變量名相同數(shù)組名的命名規(guī)則和變量名相同如如 int a10;數(shù)組名數(shù)組名定義一維數(shù)組的一般形式為:定義一維數(shù)組的一般形式為: 類型符類型符 數(shù)組名數(shù)組名常量表達式常量表達式;數(shù)組名的命名規(guī)

4、則和變量名相同數(shù)組名的命名規(guī)則和變量名相同如如 int a10;數(shù)組數(shù)組長度長度定義一維數(shù)組的一般形式為:定義一維數(shù)組的一般形式為: 類型符類型符 數(shù)組名數(shù)組名常量表達式常量表達式;數(shù)組名的命名規(guī)則和變量名相同數(shù)組名的命名規(guī)則和變量名相同如如 int a10;10個元素個元素:a0,a1,a2,a9每個元素的數(shù)據(jù)類型每個元素的數(shù)據(jù)類型a0 a1 a2 a3a7 a8 a9定義一維數(shù)組的一般形式為:定義一維數(shù)組的一般形式為: 類型符類型符 數(shù)組名數(shù)組名常量表達式常量表達式;int a4+6; 合法合法int n;scanf(“%d”,&n); int an;不合法不合法注意:注意:只能引

5、用數(shù)組元素而不能一次整只能引用數(shù)組元素而不能一次整體調(diào)用整個數(shù)組全部元素的值體調(diào)用整個數(shù)組全部元素的值引用數(shù)組元素的表示形式為:引用數(shù)組元素的表示形式為: 數(shù)組名下標數(shù)組名下標如如a0=a5+a7-a2*3 合法合法int n=5,a10;an=20;合法合法 例例6.1 對對10個數(shù)組元素依次賦值為個數(shù)組元素依次賦值為0,1, 2,3,4,5,6,7,8,9,要求按逆序輸出。,要求按逆序輸出。解題思路:解題思路:u定義一個長度為定義一個長度為10的數(shù)組,數(shù)組定義為整型的數(shù)組,數(shù)組定義為整型u要賦的值是從要賦的值是從0到到9,可以用循環(huán)來賦值,可以用循環(huán)來賦值u用循環(huán)按下標從大到小輸出這用循環(huán)

6、按下標從大到小輸出這10個元素個元素#include int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; 使使a0a9的值為的值為090123456789a0a1a2a3a4a5a6a7a8a9#include int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; 先輸出先輸出a9,最,最后輸出后輸出a00123456789a0a1a2a3a4a5a6a7a8a9在定義數(shù)組的同時,給各數(shù)組元

7、素賦值在定義數(shù)組的同時,給各數(shù)組元素賦值int a10=0,1,2,3,4,5,6,7,8,9;int a10=0,1,2,3,4;相當于相當于 int a10=0,1,2,3,4,0,0,0,0,0;int a10=0,0,0,0,0,0,0,0,0,0;相當于相當于 int a10=0;int a5=1,2,3,4,5;可寫為可寫為 int a =1,2,3,4,5; 例例6.2 用數(shù)組處理求用數(shù)組處理求Fibonacci數(shù)列問題數(shù)列問題解題思路:解題思路:u例例5.8中用簡單變量處理的,中用簡單變量處理的,缺點缺點不能在內(nèi)存不能在內(nèi)存中保存這些數(shù)。假如想直接輸出數(shù)列中第中保存這些數(shù)。假如

8、想直接輸出數(shù)列中第25個數(shù),是很困難的。個數(shù),是很困難的。u如果用數(shù)組處理,每一個數(shù)組元素代表數(shù)列中如果用數(shù)組處理,每一個數(shù)組元素代表數(shù)列中的一個數(shù),依次求出各數(shù)并存放在相應(yīng)的數(shù)組的一個數(shù),依次求出各數(shù)并存放在相應(yīng)的數(shù)組元素中元素中#include int main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) printf(“n”); printf(“%12d”,fi); printf(n); return 0; 例例6.3 有有10名同學(xué)的成績名同學(xué)的成績,要求對,要求對他他們們按

9、由小到大的順序排列。按由小到大的順序排列。解題思路:解題思路:u排序的規(guī)律有兩種:一種是排序的規(guī)律有兩種:一種是“升序升序”,從小到從小到大;另一種是大;另一種是“降序降序”,從大到小,從大到小u把題目抽象為:把題目抽象為:“對對n個數(shù)按升序排序個數(shù)按升序排序”u采用起泡法排序采用起泡法排序985420895420859420854920854290854209大數(shù)沉淀,小數(shù)起泡大數(shù)沉淀,小數(shù)起泡a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 854209584209548209542809542089a0a1a2a3a4a5for(i=0;ia

10、i+1) t=ai;ai=ai+1;ai+1=t; 542089452089425089420589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 420589240589204589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 204589024589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; for(i=0;iai+1) for(i=0;iai+1) for(i=0;iai+1) for(i=0;iai+1) for(j=0;j5;j+)in

11、t a10; int i,j,t;printf(input 10 numbers :n);for (i=0;i10;i+) scanf(%d,&ai); printf(n);for(j=0;j9;j+)for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t;printf(the sorted numbers :n);for(i=0;i10;i+) printf(%d ,ai);printf(n);908085859585907085858588908585858586同學(xué)同學(xué)1同學(xué)同學(xué)2同學(xué)同學(xué)3數(shù)學(xué)數(shù)學(xué)英語英語政治政治體育體育導(dǎo)論導(dǎo)論程序設(shè)計程序設(shè)計float scor

12、e36;6.2.1怎樣定義二維數(shù)組怎樣定義二維數(shù)組6.2.2怎樣引用二維數(shù)組的元素怎樣引用二維數(shù)組的元素6.2.3二維數(shù)組的初始化二維數(shù)組的初始化6.2.4二維數(shù)組程序舉例二維數(shù)組程序舉例二維數(shù)組定義的一般形式為二維數(shù)組定義的一般形式為 類型符類型符 數(shù)組名數(shù)組名常量表達式常量表達式常量表達式常量表達式; 如:如:float a34,b510;二維數(shù)組可被看作是一種特殊的一維數(shù)組:二維數(shù)組可被看作是一種特殊的一維數(shù)組: 它的元素又是一個一維數(shù)組它的元素又是一個一維數(shù)組例如,把例如,把a看作是一個一維數(shù)組,它有看作是一個一維數(shù)組,它有3個元素:個元素: a0、a1、a2每個元素又是一個包含每個元

13、素又是一個包含4個元素的一維數(shù)組個元素的一維數(shù)組a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23a0a1a2a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23內(nèi)存中的存儲順序內(nèi)存中的存儲順序二維數(shù)組元素的表示形式為二維數(shù)組元素的表示形式為: 數(shù)組名下標下標數(shù)組名下標下標 b12=a23/2 合法合法for(i=0;im;i+) printf(“%d,%dn”,ai0,a0i);合法合法int a34=1,2,3,4,5,6,7,8, 9,10,11,12;int a34=1,2,3,4,5,6,7,8,9,10,

14、11,12;int a34=1,5,9;等價于等價于int a34=1,0,0,0,5,0,0,0, 9,0,0,0;int a34=1,5,6;相當于相當于int a34=1,5,6,0;int a34=1,2,3,4,5,6,7,8,9,10,11,12;等價等價于于:int a 4=1,2,3,4,5,6,7,8,9,10,11,12;int a4=0,0,3,0,0,10;合法合法 例例6.4 將一個二維數(shù)組行和列的元素互換,將一個二維數(shù)組行和列的元素互換,存到另一個二維數(shù)組中。存到另一個二維數(shù)組中。654321a635241b解題思路:解題思路:u可以定義兩個數(shù)組:數(shù)組可以定義兩個數(shù)

15、組:數(shù)組a為為2行行3列,存放指定列,存放指定的的6個數(shù)個數(shù)u數(shù)組數(shù)組b為為3行行2列,開始時未賦值列,開始時未賦值u將將a數(shù)組中的元素數(shù)組中的元素aij存放到存放到b數(shù)組中的數(shù)組中的bji元素中元素中u用嵌套的用嵌套的for循環(huán)完成循環(huán)完成#include int main() int a23=1,2,3,4,5,6; int b32,i,j; printf(array a:n); for (i=0;i=1;i+) for (j=0;j=2;j+) printf(%5d,aij); bji=aij; printf(n); 處理處理a的一行中各元素的一行中各元素處理處理a中某一列元素中某一列元

16、素輸出輸出a的的各元素各元素a元素值賦給元素值賦給b相應(yīng)元素相應(yīng)元素 printf(array b:n); for (i=0;i=2;i+) for(j=0;jmax,則表示則表示a01是已經(jīng)比過的數(shù)據(jù)中值最大的,是已經(jīng)比過的數(shù)據(jù)中值最大的,把它的值賦給把它的值賦給max,取代了,取代了max的原值的原值u以后依此處理,以后依此處理,最后最后max就是最大的值就是最大的值 for i=0 to 2 for j=0 to 3max=aijrow=Icolum=jaijmax真真 max=a00輸出:輸出:max,row,colum假假記行號記行號 int i,j,row=0,colum=0,ma

17、x; int a34=1,2,3,4,9,8,7,6, -10,10,-5,2; max=a00; for (i=0;i=2;i+) for (j=0;jmax) max=aij; row=i; colum=j; printf(max=%dnrow=%dn colum=%dn,max,row,colum);記記最大值最大值記記列列號號6.3.1怎樣定義字符數(shù)組怎樣定義字符數(shù)組6.3.2字符數(shù)組的初始化字符數(shù)組的初始化6.3.3怎樣引用字符數(shù)組中的元素怎樣引用字符數(shù)組中的元素6.3.4字符串和字符串結(jié)束標志字符串和字符串結(jié)束標志6.3.5 字符數(shù)組的輸入輸出字符數(shù)組的輸入輸出6.3.6善于使用善

18、于使用字符串處理函數(shù)字符串處理函數(shù)6.3.7字符數(shù)組應(yīng)用舉例字符數(shù)組應(yīng)用舉例用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組字符數(shù)組中的一個元素存放一個字符字符數(shù)組中的一個元素存放一個字符定義字符數(shù)組的方法與定義數(shù)值型數(shù)定義字符數(shù)組的方法與定義數(shù)值型數(shù)組的方法類似組的方法類似char c10;c0=I; c1= ;c2=a; c3=m;c4= ; c5=h; c6=a; c7=p; c8=p; c9=y;Iam happyc0c1c2c3c4c5c6c7c8c9char c10=I, ,a,m, ,h,a,p,p,y; char c10=c, ,p,r,o,g,r,a,m;Ia

19、m happyc0c1c2c3c4c5c6c7c8c9cpro gram 0c0c1c2c3c4c5c6c7c8c9char diamond55= , ,*, ,*, ,*, *, , , ,*, ,*, ,*, , ,* ;例例6.6 輸出一個已知的字符輸出一個已知的字符數(shù)組數(shù)組。解題思路:解題思路:u定義一個字符數(shù)組,并用定義一個字符數(shù)組,并用“初始化列初始化列表表”對其賦以初值對其賦以初值u用循環(huán)逐個輸出此字符數(shù)組中的字符用循環(huán)逐個輸出此字符數(shù)組中的字符#include int main() char c15=I, ,a,m, ,a, ,s,t,u,d,e,n,t,.; int i; f

20、or(i=0;i15;i+) printf(%c,ci); printf(n); return 0; 例例6.7 輸出一個菱形圖。輸出一個菱形圖。解題思路:解題思路:u定義一個字符型的二維數(shù)組,用定義一個字符型的二維數(shù)組,用“初初始化列表始化列表”進行初始化進行初始化u用嵌套的用嵌套的for循環(huán)輸出字符數(shù)組中的循環(huán)輸出字符數(shù)組中的所有元素。所有元素。#include int main() char diamond5= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,*; int i,j; for (i=0;i5;i+) for (j=0;j5;j+) printf(%c,

21、diamondij); printf(n); return 0;在在C語言中,是將字符串作為語言中,是將字符串作為字符數(shù)組字符數(shù)組來處理的來處理的關(guān)心的是字符串的關(guān)心的是字符串的有效長度有效長度而不是字符而不是字符數(shù)組的長度數(shù)組的長度為了測定字符串的實際長度,為了測定字符串的實際長度,C語言規(guī)語言規(guī)定了字符串結(jié)束標志定了字符串結(jié)束標志0 0代表代表ASCII碼為碼為0的字符的字符從從ASCII碼表可以查到,碼表可以查到,ASCII碼為碼為0的字符不是一個可以顯示的字符,而是的字符不是一個可以顯示的字符,而是一個一個“空操作符空操作符”,即它什么也不做,即它什么也不做用它作為字符串結(jié)束標志不會產(chǎn)

22、生附加用它作為字符串結(jié)束標志不會產(chǎn)生附加的操作或增加有效字符,只起一個供辨的操作或增加有效字符,只起一個供辨別的標志別的標志 char c=”I am happy”;可寫成可寫成char c=”I am happy”;相當于相當于char c11=”I am happy”;char c10=”China”;可寫成可寫成char c10=”China”;從從c5開始,元素值均為開始,元素值均為0只顯示只顯示printf(”%s”,c);China 00000字符數(shù)組的輸入輸出可以有兩種方法字符數(shù)組的輸入輸出可以有兩種方法:u 逐個字符輸入輸出逐個字符輸入輸出(%c)u 整個字符串一次輸入輸出整個

23、字符串一次輸入輸出(%s)輸出的字符中不包括結(jié)束符輸出的字符中不包括結(jié)束符0用用%s輸出字符串時,輸出字符串時,printf函數(shù)中的函數(shù)中的輸出項是字符數(shù)組名,不是數(shù)組元素名輸出項是字符數(shù)組名,不是數(shù)組元素名如果一個字符數(shù)組中包含如果一個字符數(shù)組中包含多個多個0,則,則遇第一個遇第一個0時輸出就結(jié)束時輸出就結(jié)束可以用可以用scanf函數(shù)輸入一個字符串函數(shù)輸入一個字符串scanf函數(shù)中的輸入項是已定義的字符函數(shù)中的輸入項是已定義的字符數(shù)組名,輸入的字符串應(yīng)數(shù)組名,輸入的字符串應(yīng)短于短于已定義的已定義的字符數(shù)組的長度字符數(shù)組的長度char c6;scanf(”%s”,c); China 系統(tǒng)自動在

24、系統(tǒng)自動在China后面加一個后面加一個0char str15,str25,str35;scanf(”%s%s%s”,str1,str2,str3);How are you? How00str1are00str2you?0str3在在C函數(shù)庫中提供了一些用來專門處理字函數(shù)庫中提供了一些用來專門處理字符串的函數(shù),使用方便符串的函數(shù),使用方便1.puts函數(shù)函數(shù)-輸出字符串的函數(shù)輸出字符串的函數(shù) 其一般形式為其一般形式為: puts (字符數(shù)組字符數(shù)組) 作用是將一個字符串輸出到終端作用是將一個字符串輸出到終端char str20=”China”;puts(str); 輸出輸出China2. ge

25、ts函數(shù)函數(shù)-輸入字符串的函數(shù)輸入字符串的函數(shù) 其一般形式為其一般形式為: gets(字符數(shù)組字符數(shù)組) 作用是輸入一個字符串到字符數(shù)組作用是輸入一個字符串到字符數(shù)組char str20;gets(str); Computer 3. strcat函數(shù)函數(shù)-字符串連接函數(shù)字符串連接函數(shù) 其一般形式為其一般形式為: strcat(字符數(shù)組字符數(shù)組1,字符數(shù)組,字符數(shù)組2) 其作用是把兩個字符串連接起來,把字符其作用是把兩個字符串連接起來,把字符串串2接到字符串接到字符串1的后面,結(jié)果放在字符的后面,結(jié)果放在字符數(shù)組數(shù)組1中中使用字符串函數(shù)時使用字符串函數(shù)時,在程序開頭用在程序開頭用#include

26、 3. strcat函數(shù)函數(shù)-字符串連接函數(shù)字符串連接函數(shù) char str130=”People”; char str2=”China”; printf(”%s”, strcat(str1,str2); 輸出:輸出:PeopleChina要足夠大要足夠大4. strcpy和和strncpy函數(shù)函數(shù)-字符串復(fù)制字符串復(fù)制 strcpy一般形式為一般形式為: strcpy(字符數(shù)組字符數(shù)組1,字符串字符串2) 作用是將字符串作用是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1中去中去char str110,str2=”China”;strcpy(str1,str2);China 00000str14.

27、 strcpy和和strncpy函數(shù)函數(shù)-字符串復(fù)制字符串復(fù)制 strcpy一般形式為一般形式為: strcpy(字符數(shù)組字符數(shù)組1,字符串字符串2) 作用是將字符串作用是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1中去中去char str110,str2=”China”;strcpy(str1,str2);China 00000str1要足夠大要足夠大4. strcpy和和strncpy函數(shù)函數(shù)-字符串復(fù)制字符串復(fù)制 strcpy一般形式為一般形式為: strcpy(字符數(shù)組字符數(shù)組1,字符串字符串2) 作用是將字符串作用是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1中去中去char str110,

28、str2=”China”;strcpy(str1,str2);數(shù)組名形式數(shù)組名形式4. strcpy和和strncpy函數(shù)函數(shù)-字符串復(fù)制字符串復(fù)制 strcpy一般形式為一般形式為: strcpy(字符數(shù)組字符數(shù)組1,字符串字符串2) 作用是將字符串作用是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1中去中去char str110,str2=”China”;strcpy(str1,str2);數(shù)組名數(shù)組名或或字符串常量字符串常量4. strcpy和和strncpy函數(shù)函數(shù)-字符串復(fù)制字符串復(fù)制 strcpy一般形式為一般形式為: strcpy(字符數(shù)組字符數(shù)組1,字符串字符串2) 作用是將字符串作

29、用是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1中去中去char str110,str2=”China”;strcpy(str1,str2); 相當于相當于strcpy(str1,”China”);4. strcpy和和strncpy函數(shù)函數(shù)-字符串復(fù)制字符串復(fù)制 char str110,str2=”China”; str1=”China”; 錯誤錯誤 str1=str2; 錯誤錯誤4. strcpy和和strncpy函數(shù)函數(shù)-字符串復(fù)制字符串復(fù)制 可以用可以用strncpy函數(shù)將字符串函數(shù)將字符串2中前面中前面n個字符復(fù)制到字符數(shù)組個字符復(fù)制到字符數(shù)組1中去中去 strncpy(str1,str

30、2,2);u作用是將作用是將str2中最前面中最前面2個字符復(fù)制到個字符復(fù)制到str1中,取代中,取代str1中原有的最前面中原有的最前面2個字符個字符u復(fù)制的字符個數(shù)復(fù)制的字符個數(shù)n不應(yīng)多于不應(yīng)多于str1中原有的字符中原有的字符5. strcmp函數(shù)函數(shù)-字符串比較函數(shù)字符串比較函數(shù) 其一般形式為其一般形式為 strcmp(字符串字符串1,字符串,字符串2) 作用是比較字符串作用是比較字符串1和字符串和字符串2 strcmp(str1,str2); strcmp(”China”,”Korea”); strcmp(str1,”Beijing”);5. strcmp函數(shù)函數(shù)-字符串比較函數(shù)字符

31、串比較函數(shù) 字符串比較的規(guī)則是:將兩個字符串自左字符串比較的規(guī)則是:將兩個字符串自左至右逐個字符相比,直到出現(xiàn)不同的字符至右逐個字符相比,直到出現(xiàn)不同的字符或遇到或遇到0為止為止 如全部字符相同,認為兩個字符串相等如全部字符相同,認為兩個字符串相等 若出現(xiàn)不相同的字符,則以第一對不相同若出現(xiàn)不相同的字符,則以第一對不相同的字符的比較結(jié)果為準的字符的比較結(jié)果為準5. strcmp函數(shù)函數(shù)-字符串比較函數(shù)字符串比較函數(shù) ”A”A” ”computer”compare” ”these”that” ”1A”$20” ”CHINA”CANADA” ”DOG”TSINGHUA”5. strcmp函數(shù)函數(shù)-

32、字符串比較函數(shù)字符串比較函數(shù) 比較的結(jié)果由函數(shù)值帶回比較的結(jié)果由函數(shù)值帶回u如果字符串如果字符串1=字符串字符串2,則函數(shù)值為,則函數(shù)值為0u如果字符串如果字符串1字符串字符串2,則函數(shù)值為一個,則函數(shù)值為一個正整數(shù)正整數(shù)u如果字符串如果字符串1str2) printf(”yes”); 錯誤錯誤if(strcmp(str1,str2)0) printf(”yes”); 正確正確6. strlen函數(shù)函數(shù)-測字符串長度的函數(shù)測字符串長度的函數(shù) 其一般形式為其一般形式為: strlen (字符數(shù)組字符數(shù)組) 它是測試字符串長度的函數(shù)它是測試字符串長度的函數(shù) 函數(shù)的值為字符串中的實際長度函數(shù)的值為字

33、符串中的實際長度6. strlen函數(shù)函數(shù)-測字符串長度的函數(shù)測字符串長度的函數(shù) char str10=”China”; printf(”%d”,strlen(str); 輸出結(jié)果是輸出結(jié)果是5 也可以直接測試字符串常量的長度也可以直接測試字符串常量的長度 strlen(”China”);7. strlwr函數(shù)函數(shù)-轉(zhuǎn)換為小寫的函數(shù)轉(zhuǎn)換為小寫的函數(shù) 其一般形式為其一般形式為 strlwr (字符串字符串) 函數(shù)的作用是將字符串中大寫字母換成函數(shù)的作用是將字符串中大寫字母換成小寫字母小寫字母8. strupr函數(shù)函數(shù)-轉(zhuǎn)換為大寫的函數(shù)轉(zhuǎn)換為大寫的函數(shù) 其一般形式為其一般形式為 strupr (字

34、符串字符串) 函數(shù)的作用是將字符串中小寫字母換成函數(shù)的作用是將字符串中小寫字母換成大寫字母大寫字母 例例6.8 輸入一行字符,統(tǒng)計其中有多少輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。個單詞,單詞之間用空格分隔開。 解題思路:從第解題思路:從第1個字符開始逐個字符進行檢個字符開始逐個字符進行檢查,判斷此字符是否是新單詞的開頭,如果查,判斷此字符是否是新單詞的開頭,如果是,就使變量是,就使變量num的值加的值加1,最后得到的,最后得到的num的值就是單詞總數(shù)的值就是單詞總數(shù) 問題的關(guān)鍵問題的關(guān)鍵是是:怎樣確定怎樣確定“出現(xiàn)一個新出現(xiàn)一個新單詞了單詞了”u判斷是否出現(xiàn)新單詞,可以由是

35、否有空格出判斷是否出現(xiàn)新單詞,可以由是否有空格出現(xiàn)來決定現(xiàn)來決定u如果測出某一個字符為非空格,而它的前面如果測出某一個字符為非空格,而它的前面的字符是空格,則表示的字符是空格,則表示“新的單詞開始了新的單詞開始了”,此時使,此時使num累加累加1u如果當前字符為非空格而其前面的字符也是如果當前字符為非空格而其前面的字符也是非空格,則非空格,則num不應(yīng)再累加不應(yīng)再累加1u用變量用變量word作為判別當前是否開始了一個作為判別當前是否開始了一個新單詞的標志,若新單詞的標志,若word=0表示未出現(xiàn)新表示未出現(xiàn)新單詞,如出現(xiàn)了新單詞,就把單詞,如出現(xiàn)了新單詞,就把word置成置成1u前面一個字符是

36、否空格可以從前面一個字符是否空格可以從word的值看的值看出來,若出來,若word等于等于0,則表示前一個字符,則表示前一個字符是空格;如果是空格;如果word等于等于1,意味著前一個,意味著前一個字符為非空格字符為非空格Yc=空格word=0Nword=0Yword=1num+Nif(c= ) word=0; else if(word=0) word=1; num+; 當前字符當前字符I Ia am ma ab bo oy y. .是否空格是否空格否否 是是 否否 否否 是是 否否 是是 否否 否否 否否 否否wordword原值原值0 01 10 01 11 10 01 10 01 11 11 1新單詞開始否新單詞開始否 是是 否否 是是 否否 否否 是是 否否 是是 否否 否否 否否wordword新值新值1 10 01 11 10 01 10 01 11 11 11 1numnum值值1 11 12 22 22 23 33 34 44 44 44 4 char string81,c; int i,num=0,word=0; gets(string); for (i=0;(c=stringi)!=0;i+)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論