C程序設(shè)計(jì)(第四版)課件利用數(shù)組處理批量數(shù)據(jù)_第1頁
C程序設(shè)計(jì)(第四版)課件利用數(shù)組處理批量數(shù)據(jù)_第2頁
C程序設(shè)計(jì)(第四版)課件利用數(shù)組處理批量數(shù)據(jù)_第3頁
C程序設(shè)計(jì)(第四版)課件利用數(shù)組處理批量數(shù)據(jù)_第4頁
C程序設(shè)計(jì)(第四版)課件利用數(shù)組處理批量數(shù)據(jù)_第5頁
已閱讀5頁,還剩87頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

4、量表達(dá)式;數(shù)組名的命名規(guī)則和變量名相同數(shù)組名的命名規(guī)則和變量名相同如如 int a10;數(shù)組數(shù)組長度長度定義一維數(shù)組的一般形式為:定義一維數(shù)組的一般形式為: 類型符類型符 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式;數(shù)組名的命名規(guī)則和變量名相同數(shù)組名的命名規(guī)則和變量名相同如如 int a10;10個(gè)元素個(gè)元素:a0,a1,a2,a9每個(gè)元素的數(shù)據(jù)類型每個(gè)元素的數(shù)據(jù)類型a0 a1 a2 a3a7 a8 a9定義一維數(shù)組的一般形式為:定義一維數(shù)組的一般形式為: 類型符類型符 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式;int a4+6; 合法合法int n=10; int an;不合法不合法在定義數(shù)組并對其中各元素賦

5、值后,就在定義數(shù)組并對其中各元素賦值后,就可以引用數(shù)組中的元素可以引用數(shù)組中的元素注意:只能引用數(shù)組元素而不能一次整注意:只能引用數(shù)組元素而不能一次整體調(diào)用整個(gè)數(shù)組全部元素的值體調(diào)用整個(gè)數(shù)組全部元素的值引用數(shù)組元素的表示形式為:引用數(shù)組元素的表示形式為: 數(shù)組名下標(biāo)數(shù)組名下標(biāo)如如a0=a5+a7-a2*3 合法合法int n=5,a10;an=20;合法合法 例例6.1 對對10個(gè)數(shù)組元素依次賦值為個(gè)數(shù)組元素依次賦值為0,1, 2,3,4,5,6,7,8,9,要求按逆序輸出。,要求按逆序輸出。解題思路:解題思路:u定義一個(gè)長度為定義一個(gè)長度為10的數(shù)組,數(shù)組定義為整型的數(shù)組,數(shù)組定義為整型u要

6、賦的值是從要賦的值是從0到到9,可以用循環(huán)來賦值,可以用循環(huán)來賦值u用循環(huán)按下標(biāo)從大到小輸出這用循環(huán)按下標(biāo)從大到小輸出這10個(gè)元素個(gè)元素#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,最,最后輸

7、出后輸出a00123456789a0a1a2a3a4a5a6a7a8a9在定義數(shù)組的同時(shí),給各數(shù)組元素賦值在定義數(shù)組的同時(shí),給各數(shù)組元素賦值int a10=0,1,2,3,4,5,6,7,8,9;int a10=0,1,2,3,4;相當(dāng)于相當(dāng)于 int a10=0,1,2,3,4,0,0,0,0,0;int a10=0,0,0,0,0,0,0,0,0,0;相當(dāng)于相當(dāng)于 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中用簡單變量處理的,中

8、用簡單變量處理的,缺點(diǎn)缺點(diǎn)不能在內(nèi)存不能在內(nèi)存中保存這些數(shù)。假如想直接輸出數(shù)列中第中保存這些數(shù)。假如想直接輸出數(shù)列中第25個(gè)數(shù),是很困難的。個(gè)數(shù),是很困難的。u如果用數(shù)組處理,每一個(gè)數(shù)組元素代表數(shù)列中如果用數(shù)組處理,每一個(gè)數(shù)組元素代表數(shù)列中的一個(gè)數(shù),依次求出各數(shù)并存放在相應(yīng)的數(shù)組的一個(gè)數(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

9、(n); return 0; 例例6.3 有有10個(gè)地區(qū)的面積,要求對它們個(gè)地區(qū)的面積,要求對它們按由小到大的順序排列。按由小到大的順序排列。解題思路:解題思路:u排序的規(guī)律有兩種:一種是排序的規(guī)律有兩種:一種是“升序升序”,從小到從小到大;另一種是大;另一種是“降序降序”,從大到小,從大到小u把題目抽象為:把題目抽象為:“對對n個(gè)數(shù)按升序排序個(gè)數(shù)按升序排序”u采用起泡法排序采用起泡法排序985420895420859420854920854290854209大數(shù)沉淀,小數(shù)起泡大數(shù)沉淀,小數(shù)起泡a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 85

10、4209584209548209542809542089a0a1a2a3a4a5for(i=0;iai+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

11、+1) for(i=0;iai+1) for(i=0;iai+1) for(j=0;j5;j+)int 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);2456 1847 1243 1600 2346 27573045 2018 1725

12、 2020 2458 14361427 1175 1046 1976 1477 20181分隊(duì)分隊(duì)2分隊(duì)分隊(duì)3分隊(duì)分隊(duì)隊(duì)員隊(duì)員1 隊(duì)員隊(duì)員2隊(duì)員隊(duì)員3 隊(duì)員隊(duì)員4隊(duì)員隊(duì)員5隊(duì)員隊(duì)員6float pay36;6.2.1怎樣定義二維數(shù)組怎樣定義二維數(shù)組6.2.2怎樣引用二維數(shù)組的元素怎樣引用二維數(shù)組的元素6.2.3二維數(shù)組的初始化二維數(shù)組的初始化6.2.4二維數(shù)組程序舉例二維數(shù)組程序舉例二維數(shù)組定義的一般形式為二維數(shù)組定義的一般形式為 類型符類型符 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式常量表達(dá)式常量表達(dá)式; 如:如:float a34,b510;二維數(shù)組可被看作是一種特殊的一維數(shù)組:二維數(shù)組可被看作是

13、一種特殊的一維數(shù)組: 它的元素又是一個(gè)一維數(shù)組它的元素又是一個(gè)一維數(shù)組例如,把例如,把a(bǔ)看作是一個(gè)一維數(shù)組,它有看作是一個(gè)一維數(shù)組,它有3個(gè)元素:個(gè)元素: a0、a1、a2每個(gè)元素又是一個(gè)包含每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組個(gè)元素的一維數(shù)組a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23a0a1a2a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23邏輯存儲(chǔ)邏輯存儲(chǔ)內(nèi)存中的存儲(chǔ)順序內(nèi)存中的存儲(chǔ)順序二維數(shù)組元素的表示形式為二維數(shù)組元素的表示形式為: 數(shù)組名下標(biāo)下標(biāo)數(shù)組名下標(biāo)下標(biāo) b12=a23/2 合法合法fo

14、r(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,11,12;int a34=1,5,9;等價(jià)于等價(jià)于int a34=1,0,0,0,5,0,0,0, 9,0,0,0;int a34=1,5,6;相當(dāng)于相當(dāng)于int a34=1,5,6,0;int a34=1,2,3,4,5,6,7,8,9,10,11,12;等價(jià)等價(jià)于于:int a 4=1,2,3,4,5,6,7,8,9,10,11,12;int a4=0,0,3, ,0,10;合

15、法合法 例例6.4 將一個(gè)二維數(shù)組行和列的元素互換,將一個(gè)二維數(shù)組行和列的元素互換,存到另一個(gè)二維數(shù)組中。存到另一個(gè)二維數(shù)組中。654321a635241b解題思路:解題思路:u可以定義兩個(gè)數(shù)組:數(shù)組可以定義兩個(gè)數(shù)組:數(shù)組a為為2行行3列,存放指定列,存放指定的的6個(gè)數(shù)個(gè)數(shù)u數(shù)組數(shù)組b為為3行行2列,開始時(shí)未賦值列,開始時(shí)未賦值u將將a數(shù)組中的元素?cái)?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);

16、 for (i=0;i=1;i+) for (j=0;j=2;j+) printf(%5d,aij); bji=aij; printf(n); 處理處理a的一行中各元素的一行中各元素處理處理a中某一列元素中某一列元素輸出輸出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

17、=0 to 2 for j=0 to 3max=aijrow=Icolum=jaijmax真真 max=a00輸出:輸出:max,row,colum假假記行號(hào)記行號(hào) int i,j,row=0,colum=0,max; 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);記記最大值最大值記記列列號(hào)號(hào)6.3.1怎樣定義字符數(shù)組怎樣定義字符數(shù)組6.3.

18、2字符數(shù)組的初始化字符數(shù)組的初始化6.3.3怎樣引用字符數(shù)組中的元素怎樣引用字符數(shù)組中的元素6.3.4字符串和字符串結(jié)束標(biāo)志字符串和字符串結(jié)束標(biāo)志6.3.5 字符數(shù)組的輸入輸出字符數(shù)組的輸入輸出6.3.6善于使用善于使用字符串處理函數(shù)字符串處理函數(shù)6.3.7字符數(shù)組應(yīng)用舉例字符數(shù)組應(yīng)用舉例用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組字符數(shù)組中的一個(gè)元素存放一個(gè)字符字符數(shù)組中的一個(gè)元素存放一個(gè)字符定義字符數(shù)組的方法與定義數(shù)值型數(shù)定義字符數(shù)組的方法與定義數(shù)值型數(shù)組的方法類似組的方法類似char c10;c0=I; c1= ;c2=a; c3=m;c4= ; c5=h; c6=a

19、; 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;Iam happyc0c1c2c3c4c5c6c7c8c9cpro gram 0c0c1c2c3c4c5c6c7c8c9char diamond55= , ,*, ,*, ,*, *, , , ,*, ,*, ,*, , ,* ;例例6.6 輸出一個(gè)已知的字符串。輸出一個(gè)已知的字符串。解題思路:解題思路:u定義一個(gè)字符數(shù)組,并用定義一個(gè)字符數(shù)組,并用“初始化列初始化列表表”對其賦以初值對

20、其賦以初值u用循環(huán)逐個(gè)輸出此字符數(shù)組中的字符用循環(huán)逐個(gè)輸出此字符數(shù)組中的字符#include int main() char c15=I, ,a,m, ,a, ,s,t,u,d,e,n,t,.; int i; for(i=0;i15;i+) printf(%c,ci); printf(n); return 0; 例例6.7 輸出一個(gè)菱形圖。輸出一個(gè)菱形圖。解題思路:解題思路:u定義一個(gè)字符型的二維數(shù)組,用定義一個(gè)字符型的二維數(shù)組,用“初初始化列表始化列表”進(jìn)行初始化進(jìn)行初始化u用嵌套的用嵌套的for循環(huán)輸出字符數(shù)組中的循環(huán)輸出字符數(shù)組中的所有元素。所有元素。#include int main(

21、) char diamond5= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,*; int i,j; for (i=0;i5;i+) for (j=0;j5;j+) printf(%c,diamondij); printf(n); return 0;在在C語言中,是將字符串作為語言中,是將字符串作為字符數(shù)組字符數(shù)組來處理的來處理的關(guān)心的是字符串的關(guān)心的是字符串的有效長度有效長度而不是字符而不是字符數(shù)組的長度數(shù)組的長度為了測定字符串的實(shí)際長度,為了測定字符串的實(shí)際長度,C語言規(guī)語言規(guī)定了字符串結(jié)束標(biāo)志定了字符串結(jié)束標(biāo)志0 0代表代表ASCII碼為碼為0的字符的字符從從A

22、SCII碼表可以查到,碼表可以查到,ASCII碼為碼為0的字符不是一個(gè)可以顯示的字符,而是的字符不是一個(gè)可以顯示的字符,而是一個(gè)一個(gè)“空操作符空操作符”,即它什么也不做,即它什么也不做用它作為字符串結(jié)束標(biāo)志不會(huì)產(chǎn)生附加用它作為字符串結(jié)束標(biāo)志不會(huì)產(chǎn)生附加的操作或增加有效字符,只起一個(gè)供辨的操作或增加有效字符,只起一個(gè)供辨別的標(biāo)志別的標(biāo)志 char c=”I am happy”;可寫成可寫成char c=”I am happy”;相當(dāng)于相當(dāng)于char c11=”I am happy”;char c10=”China”;可寫成可寫成char c10=”China”;從從c5開始,元素值均為開始,元素

23、值均為0只顯示只顯示printf(”%s”,c);China 00000字符數(shù)組的輸入輸出可以有兩種方法字符數(shù)組的輸入輸出可以有兩種方法:u 逐個(gè)字符輸入輸出逐個(gè)字符輸入輸出(%c)u 整個(gè)字符串一次輸入輸出整個(gè)字符串一次輸入輸出(%s)輸出的字符中不包括結(jié)束符輸出的字符中不包括結(jié)束符0用用%s輸出字符串時(shí),輸出字符串時(shí),printf函數(shù)中的函數(shù)中的輸出項(xiàng)是字符數(shù)組名,不是數(shù)組元素名輸出項(xiàng)是字符數(shù)組名,不是數(shù)組元素名如果一個(gè)字符數(shù)組中包含如果一個(gè)字符數(shù)組中包含多個(gè)多個(gè)0,則,則遇第一個(gè)遇第一個(gè)0時(shí)輸出就結(jié)束時(shí)輸出就結(jié)束可以用可以用scanf函數(shù)輸入一個(gè)字符串函數(shù)輸入一個(gè)字符串scanf函數(shù)中的

24、輸入項(xiàng)函數(shù)中的輸入項(xiàng)c是已定義的字是已定義的字符數(shù)組名,輸入的字符串應(yīng)符數(shù)組名,輸入的字符串應(yīng)短于短于已定義已定義的字符數(shù)組的長度的字符數(shù)組的長度char c6;scanf(”%s”,c); China 系統(tǒng)自動(dòng)在系統(tǒng)自動(dòng)在China后面加一個(gè)后面加一個(gè)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ù)輸出字符

25、串的函數(shù) 其一般形式為其一般形式為: puts (字符數(shù)組字符數(shù)組) 作用是將一個(gè)字符串輸出到終端作用是將一個(gè)字符串輸出到終端char str20=”China”;puts(str); 輸出輸出China2. gets函數(shù)函數(shù)-輸入字符串的函數(shù)輸入字符串的函數(shù) 其一般形式為其一般形式為: gets(字符數(shù)組字符數(shù)組) 作用是輸入一個(gè)字符串到字符數(shù)組作用是輸入一個(gè)字符串到字符數(shù)組char str20;gets(str); Computer 3. strcat函數(shù)函數(shù)-字符串連接函數(shù)字符串連接函數(shù) 其一般形式為其一般形式為: strcat(字符數(shù)組字符數(shù)組1,字符數(shù)組,字符數(shù)組2) 其作用是把兩個(gè)

26、字符串連接起來,把字符其作用是把兩個(gè)字符串連接起來,把字符串串2接到字符串接到字符串1的后面,結(jié)果放在字符的后面,結(jié)果放在字符數(shù)組數(shù)組1中中使用字符串函數(shù)時(shí)使用字符串函數(shù)時(shí),在程序開頭用在程序開頭用#include 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ù)組字符

27、數(shù)組1,字符串字符串2) 作用是將字符串作用是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1中去中去char str110,str2=”China”;strcpy(str1,str2);China 00000str14. 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和和strncp

28、y函數(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) 作用是將字符串作用是將字符串2復(fù)制到字符數(shù)組復(fù)制到字符數(shù)組1中去中去char str110,str2=”China”;strcpy(str1,str

29、2);數(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); 相當(dāng)于相當(dāng)于strcpy(str1,”China”);4. strcpy和和strncpy函數(shù)函數(shù)-字符串復(fù)制字符串復(fù)制 char str110,str2=”China”; str1=”China”; 錯(cuò)誤錯(cuò)誤 str1=str2; 錯(cuò)誤錯(cuò)誤4.

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

31、是比較字符串1和字符串和字符串2 strcmp(str1,str2); strcmp(”China”,”Korea”); strcmp(str1,”Beijing”);5. strcmp函數(shù)函數(shù)-字符串比較函數(shù)字符串比較函數(shù) 字符串比較的規(guī)則是:將兩個(gè)字符串自左字符串比較的規(guī)則是:將兩個(gè)字符串自左至右逐個(gè)字符相比,直到出現(xiàn)不同的字符至右逐個(gè)字符相比,直到出現(xiàn)不同的字符或遇到或遇到0為止為止 如全部字符相同,認(rèn)為兩個(gè)字符串相等如全部字符相同,認(rèn)為兩個(gè)字符串相等 若出現(xiàn)不相同的字符,則以第一對不相同若出現(xiàn)不相同的字符,則以第一對不相同的字符的比較結(jié)果為準(zhǔn)的字符的比較結(jié)果為準(zhǔn)5. strcmp函數(shù)函

32、數(shù)-字符串比較函數(shù)字符串比較函數(shù) ”A”A” ”computer”compare” ”these”that” ”1A”$20” ”CHINA”CANADA” ”DOG”TSINGHUA”5. strcmp函數(shù)函數(shù)-字符串比較函數(shù)字符串比較函數(shù) 比較的結(jié)果由函數(shù)值帶回比較的結(jié)果由函數(shù)值帶回u如果字符串如果字符串1=字符串字符串2,則函數(shù)值為,則函數(shù)值為0u如果字符串如果字符串1字符串字符串2,則函數(shù)值為一個(gè),則函數(shù)值為一個(gè)正整數(shù)正整數(shù)u如果字符串如果字符串1str2) printf(”yes”); 錯(cuò)誤錯(cuò)誤if(strcmp(str1,str2)0) printf(”yes”); 正確正確6.

33、strlen函數(shù)函數(shù)-測字符串長度的函數(shù)測字符串長度的函數(shù) 其一般形式為其一般形式為: strlen (字符數(shù)組字符數(shù)組) 它是測試字符串長度的函數(shù)它是測試字符串長度的函數(shù) 函數(shù)的值為字符串中的實(shí)際長度函數(shù)的值為字符串中的實(shí)際長度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ù) 其一般形式為其一般形式為 strl

34、wr (字符串字符串) 函數(shù)的作用是將字符串中大寫字母換成函數(shù)的作用是將字符串中大寫字母換成小寫字母小寫字母8. strupr函數(shù)函數(shù)-轉(zhuǎn)換為大寫的函數(shù)轉(zhuǎn)換為大寫的函數(shù) 其一般形式為其一般形式為 strupr (字符串字符串) 函數(shù)的作用是將字符串中小寫字母換成函數(shù)的作用是將字符串中小寫字母換成大寫字母大寫字母 例例6.8 輸入一行字符,統(tǒng)計(jì)其中有多少輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間用空格分隔開。個(gè)單詞,單詞之間用空格分隔開。 解題思路:問題的關(guān)鍵是怎樣確定解題思路:問題的關(guān)鍵是怎樣確定“出出現(xiàn)一個(gè)新單詞了現(xiàn)一個(gè)新單詞了”u 從第從第1個(gè)字符開始逐個(gè)字符進(jìn)行檢查,判斷個(gè)字符開始逐個(gè)

35、字符進(jìn)行檢查,判斷此字符是否是新單詞的開頭,如果是,就此字符是否是新單詞的開頭,如果是,就使變量使變量num的值加的值加1,最后得到的,最后得到的num的的值就是單詞總數(shù)值就是單詞總數(shù)u判斷是否出現(xiàn)新單詞,可以由是否有空格出判斷是否出現(xiàn)新單詞,可以由是否有空格出現(xiàn)來決定現(xiàn)來決定(連續(xù)的若干個(gè)空格作為出現(xiàn)一次連續(xù)的若干個(gè)空格作為出現(xiàn)一次空格;一行開頭的空格不統(tǒng)計(jì)在內(nèi)空格;一行開頭的空格不統(tǒng)計(jì)在內(nèi))u如果測出某一個(gè)字符為非空格,而它的前面如果測出某一個(gè)字符為非空格,而它的前面的字符是空格,則表示的字符是空格,則表示“新的單詞開始了新的單詞開始了”,此時(shí)使,此時(shí)使num累加累加1u如果當(dāng)前字符為非空格而其前面的字符也是如果當(dāng)前字符為非空格而其前面的字符也是非空格,則非空格,則num不應(yīng)再累加不應(yīng)再累加1u用變量用變量word作為判別當(dāng)前是否開始了一個(gè)作為判別當(dāng)前是否開始了一個(gè)新單詞的標(biāo)志,若新單詞的標(biāo)志,若word=0表示未出現(xiàn)新表示未出現(xiàn)新單詞,如出現(xiàn)了新單詞,就把單詞,如出現(xiàn)了新單詞,就把word置成置成1u前面一個(gè)字符是否空格可以從前面一個(gè)字符是否空格可以從

溫馨提示

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

最新文檔

評論

0/150

提交評論