_利用數(shù)組處理批量數(shù)據(jù)_2__第1頁
_利用數(shù)組處理批量數(shù)據(jù)_2__第2頁
_利用數(shù)組處理批量數(shù)據(jù)_2__第3頁
_利用數(shù)組處理批量數(shù)據(jù)_2__第4頁
_利用數(shù)組處理批量數(shù)據(jù)_2__第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 本章要點掌握一維、二維數(shù)組的定義和引用方法、存儲結(jié)構(gòu)和初始化方法。掌握有關(guān)一維數(shù)組的有關(guān)算法掌握數(shù)組的運算。6.1 怎樣定義和引用一維數(shù)組6.2 怎樣定義和引用二維數(shù)組6.3 字符數(shù)組主要內(nèi)容怎樣定義字符數(shù)組字符數(shù)組的初始化怎樣引用字符數(shù)組中的元素字符串和字符串結(jié)束標(biāo)志6.3.5 字符數(shù)組的輸入輸出使用字符串處理函數(shù)字符數(shù)組應(yīng)用舉例6.3 字符數(shù)組用來存放字符數(shù)據(jù)的數(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; c

2、9=y;c0c1c2c3c4c5c6c7c8c9字符數(shù)組的初始化對字符數(shù)組初始化,可逐個字符賦給數(shù)組中各元素。例如:char c10=I,a,m,h,a,p,p,y 如果初值個數(shù)小于數(shù)組長度,那么只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動定為空字符。char c10=c, ,p,r,o,g,r,a,m; 如果提供的初值個數(shù)與預(yù)定的數(shù)組長度相同,在定義時可以省略數(shù)組長度,系統(tǒng)會自動根據(jù)初值個數(shù)確定數(shù)組長度。char c=I, ,a,m, ,h,a,p,p,y;數(shù)組c的長度自動定為10。 char diamond55= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,

3、*定義和初始化一個二維字符數(shù)組 例6.6 輸出一個的字符串。解題思路:定義一個字符數(shù)組,并用“初始化列表對其賦以初值用循環(huán)逐個輸出此字符數(shù)組中的字符怎樣引用字符數(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 輸出一個菱形圖。解題思路:定義一個字符型的二維數(shù)組,用“初始化列表進行初始化用嵌套的for循環(huán)輸出字符數(shù)組中的所有元素。#include int main() char diamo

4、nd5= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,*; int i,j; for (i=0;i5;i+) for (j=0;j5;j+) printf(%c,diamondij); printf(n); return 0;在C語言中,是將字符串作為字符數(shù)組來處理的關(guān)心的是字符串的有效長度而不是字符數(shù)組的長度為了測定字符串的實際長度,C語言規(guī)定了字符串結(jié)束標(biāo)志0字符串和字符串結(jié)束標(biāo)志 0代表ASCII碼為0的字符從ASCII碼表可以查到,ASCII碼為0的字符不是一個可以顯示的字符,而是一個“空操作符,即它什么也不做用它作為字符串結(jié)束標(biāo)志不會產(chǎn)生附加的操作或增加有效

5、字符,只起一個供區(qū)分的標(biāo)志 char c=I am happy;可寫成char c=I am happy;相當(dāng)于char c11=I am happy;char c10=China;可寫成char c10=China;從c5開始,元素值均為0只顯示printf(%s,c);例如:定義字符數(shù)組char c=“Pascal program;要用一個新的字符串代替原有的字符串Pascal program ,從鍵盤向字符數(shù)組輸入Hello如果不加0的話,字符數(shù)組中的字符如下Hellol program字符數(shù)組的輸入輸出可以有兩種方法: 逐個字符輸入輸出%c 整個字符串一次輸入輸出%s輸出的字符中不包括

6、結(jié)束符0用%s輸出字符串時,printf函數(shù)中的輸出項是字符數(shù)組名,不是數(shù)組元素名6.3.5 字符數(shù)組的輸入輸出char c=China;printf(%s,c); 例如在內(nèi)存中數(shù)組c的狀態(tài)如果一個字符數(shù)組中包含多個0,那么遇第一個0時輸出就結(jié)束可以用scanf函數(shù)輸入一個字符串scanf函數(shù)中的輸入項c是已定義的字符數(shù)組名,輸入的字符串應(yīng)短于已定義的字符數(shù)組的長度char c6;scanf(%s,c); China系統(tǒng)自動在China后面加一個0如果利用一個scanf函數(shù)輸入多個字符串,那么在輸入時以空格分隔。char str15,str25,str35;scanf(%s%s%s,str1,

7、str2,str3);How are you? str1str2str3分析圖中所示的字符數(shù)組用8進制形式輸出數(shù)組c的起始地址 printf(%o,c); printf(%s,c);注意:scanf函數(shù)中的輸入項如果是字符數(shù)組名。不要再加地址符&,因為在C語言中數(shù)組名代表該數(shù)組的起始地址。下面寫法不對:scanf(%s,&str);6.3.6 使用字符串處理函數(shù)1.puts函數(shù)-輸出字符串的函數(shù)其一般形式為: puts (字符數(shù)組)作用是將一個字符串輸出到終端char str20=China;puts(str); 輸出China2. gets函數(shù)-輸入字符串的函數(shù)其一般形式為: gets(字符

8、數(shù)組)作用是輸入一個字符串到字符數(shù)組char str20;gets(str); Computer將輸入的字符串Computer送給字符數(shù)組str3. strcat函數(shù)-字符串連接函數(shù)其一般形式為: strcat(字符數(shù)組1,字符數(shù)組2)其作用是把兩個字符串連接起來,把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中使用字符串函數(shù)時,在程序開頭用#include 例如:char str130=Peoples Republic of ;char str2=China;print(%s,strcat(str1,str2); 輸出:Peoples Republic of China 4. strcpy

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

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

11、py(str1,China);不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。如: str1=China; 不合法 str1=str2; 不合法只能用strcpy函數(shù)將一個字符串復(fù)制到另一個字符數(shù)組中去。用賦值語句只能將一個字符賦給一個字符型變量或字符數(shù)組元素。下面是合法的使用:char a5,c1,c2;c1=A; c2=B;a0=C; a1=h; a2=i; a3=n; a4=a; 4. strcpy和strncpy函數(shù)-字符串復(fù)制可以用strncpy函數(shù)將字符串2中前面n個字符復(fù)制到字符數(shù)組1中去strncpy(str1,str2,2);作用是將str2中最前面2個字符復(fù)制到

12、str1中,取代str1中原有的最前面2個字符復(fù)制的字符個數(shù)n不應(yīng)多于str1中原有的字符5. strcmp函數(shù)-字符串比較函數(shù)其一般形式為 strcmp(字符串1,字符串2)作用是比較字符串1和字符串2strcmp(str1,str2);strcmp(China,Korea);strcmp(str1,Beijing);5. strcmp函數(shù)-字符串比較函數(shù)字符串比較的規(guī)那么是:將兩個字符串自左至右逐個字符相比,直到出現(xiàn)不同的字符或遇到0為止如全部字符相同,認為兩個字符串相等假設(shè)出現(xiàn)不相同的字符,那么以第一對不相同的字符的比較結(jié)果為準5. strcmp函數(shù)-字符串比較函數(shù) AA compute

13、rcompare thesethat 1A$20 CHINACANADA DOGTSINGHUA5. strcmp函數(shù)-字符串比較函數(shù)比較的結(jié)果由函數(shù)值帶回如果字符串1=字符串2,那么函數(shù)值為0如果字符串1字符串2,那么函數(shù)值為一個正整數(shù)如果字符串1str2) printf(yes); 錯誤if(strcmp(str1,str2)0) printf(yes); 正確6. strlen函數(shù)-測字符串長度的函數(shù)其一般形式為: strlen (字符數(shù)組)它是測試字符串長度的函數(shù)函數(shù)的值為字符串中的實際長度6. strlen函數(shù)-測字符串長度的函數(shù) char str10=China; printf(%

14、d,strlen(str);輸出結(jié)果是5也可以直接測試字符串常量的長度 strlen(China);7. strlwr函數(shù)-轉(zhuǎn)換為小寫的函數(shù)其一般形式為 strlwr (字符串)函數(shù)的作用是將字符串中大寫字母換成小寫字母8. strupr函數(shù)-轉(zhuǎn)換為大寫的函數(shù)其一般形式為 strupr (字符串)函數(shù)的作用是將字符串中小寫字母換成大寫字母 例6.8 輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。解題思路:問題的關(guān)鍵是怎樣確定“出現(xiàn)一個新單詞了從第1個字符開始逐個字符進行檢查,判斷此字符是否是新單詞的開頭,如果是,就使變量num的值加1,最后得到的num的值就是單詞總數(shù)字符數(shù)組應(yīng)用舉

15、例判斷是否出現(xiàn)新單詞,可以由是否有空格出現(xiàn)來決定(連續(xù)的假設(shè)干個空格作為出現(xiàn)一次空格;一行開頭的空格不統(tǒng)計在內(nèi))如果測出某一個字符為非空格,而它的前面的字符是空格,那么表示“新的單詞開始了,此時使num累加1如果當(dāng)前字符為非空格而其前面的字符也是非空格,那么num不應(yīng)再累加1用變量word作為判別當(dāng)前是否開始了一個新單詞的標(biāo)志,假設(shè)word=0表示未出現(xiàn)新單詞,如出現(xiàn)了新單詞,就把word置成1前面一個字符是否空格可以從word的值看出來,假設(shè)word等于0,那么表示前一個字符是空格;如果word等于1,意味著前一個字符為非空格Yc=空格word=0Nword=0Yword=1num+Nif(

16、c= ) word=0; else if(word=0) word=1; num+; char string81,c; int i,num=0,word=0; gets(string); for (i=0;(c=stringi)!=0;i+) if(c= ) word=0; else if(word=0) word=1; num+; printf(“%d wordsn,num); 一定要設(shè)初始值 char string81,c; int i,num=0,word=0; gets(string); for (i=0;(c=stringi)!=0;i+) if(c= ) word=0; else

17、if(word=0) word=1; num+; printf(“%d wordsn,num); 相當(dāng)于c=stringi;c!=0例6.9 有3個字符串,要求找出其中最大者。解題思路:設(shè)一個二維的字符數(shù)組str,大小為310。每一行存放一個字符串 char str310;for (i=0;i0) strcpy(string,str0); else strcpy(string,str1); if (strcmp(str2,string)0) strcpy(string,str2);#include#includeint main ( )char str310; char string10; i

18、nt i; for (i=0;i0) strcpy(string,str0); else strcpy(string,str1); if (strcmp(str2,string)0) strcpy(string,str2); printf(nthe largest:n%sn,string); return 0;作業(yè):5月6日交本1、練習(xí)本課相關(guān)程序2、見ppt后面一、選擇題1、以下能正確進行字符串賦值、賦初值的語句組是 Achar s5=a,e,i,o,u; Bchar s5=“good;Cchar s5=“good!;Dchar s5;s=“good;2、以下對C語言字符數(shù)組的描述中錯誤的選項是 A字符數(shù)組可以存放字符串B字符數(shù)組中字符串可以整體輸入、輸出C可以在賦值語句中通過賦值運算符“對字符數(shù)組整體賦值D不可以用關(guān)系運算符對字符數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論