一維數(shù)組(C語(yǔ)言)_第1頁(yè)
一維數(shù)組(C語(yǔ)言)_第2頁(yè)
一維數(shù)組(C語(yǔ)言)_第3頁(yè)
一維數(shù)組(C語(yǔ)言)_第4頁(yè)
一維數(shù)組(C語(yǔ)言)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

一維數(shù)組1、數(shù)組概念的引入(必要性)如用以解決從鍵盤(pán)輸入任意100個(gè)數(shù),輸出這些的半值這樣的問(wèn)題。

概念:數(shù)組由假設(shè)干個(gè)類(lèi)型相同的元素組成,每個(gè)元素就是一個(gè)變量,每個(gè)數(shù)組都有一個(gè)名稱(chēng),稱(chēng)為數(shù)組名。一個(gè)可以輸入10個(gè)數(shù)的例子main(){inti,a[10];printf("Pleaseinput10numbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\nyouinputis:");for(i=0;i<10;i++)printf("%d,",&a[i]);}一維數(shù)組2、一維數(shù)組的定義一維數(shù)組是指數(shù)組元素只有一個(gè)下標(biāo)的數(shù)組。定義一維數(shù)組的一般格式如:

類(lèi)型名數(shù)組名[整型常量表達(dá)式],…如:inta[5];該語(yǔ)句(1)定義了一個(gè)名為a的一維數(shù)組。(2)方括號(hào)中的5規(guī)定該數(shù)組最多容納5個(gè)元素。(3)類(lèi)型名int規(guī)定了這5個(gè)元素均為整型變量。(4)C語(yǔ)言規(guī)定數(shù)組第一個(gè)元素的下標(biāo)(數(shù)組下標(biāo)的下界)為0;因此最后一個(gè)元素的下標(biāo)(數(shù)組下標(biāo)的上界)為數(shù)組元素個(gè)數(shù)減1a[0]a[1]a[2]a[3]a[4]一維數(shù)組3、一維數(shù)組元素的使用數(shù)組定義后,就可以在程序中使用數(shù)組元素。格式如下:數(shù)組名[下標(biāo)表達(dá)式]如:inta[10];a[0]=0;a[1]=1;a[2]=a[0]+a[1];一維數(shù)組使用數(shù)組元素應(yīng)注意:(1)系統(tǒng)在內(nèi)存中為數(shù)組分配一塊連續(xù)的存儲(chǔ)單元,最低的地址對(duì)應(yīng)于第一個(gè)數(shù)組元素,最高的地址對(duì)應(yīng)于最后一個(gè)數(shù)組元素。每個(gè)數(shù)組元素等同于一個(gè)變量。(2)C語(yǔ)言中,不能對(duì)一個(gè)數(shù)組整體賦值。如:inta[10],b[10],k;for(k=0;k<10;k++)scanf(“%d〞,&a[k]);b=a;/*error*/for(k=0;k<10;k++)b[k]=a[k];一維數(shù)組(3)在使用數(shù)組元素時(shí),數(shù)組元素中的下標(biāo)表達(dá)式的值必須是整型。下標(biāo)表達(dá)式值的下限為0,值的上限為該數(shù)組元素的個(gè)數(shù)減1。使用數(shù)組時(shí)注意其下標(biāo)不要越界。如果下標(biāo)越界,程序無(wú)法得到正確的結(jié)果。一維數(shù)組4、數(shù)組元素的初始化一般形式為:類(lèi)型名數(shù)組名[整型常量表達(dá)式]={常量1,常量2,…}例:inta[10]={1,2,3,4,5,6,7,8,9,10};該語(yǔ)句定義了一個(gè)動(dòng)態(tài)數(shù)組,并對(duì)該動(dòng)態(tài)數(shù)組進(jìn)行了初始化。注意:1、所賦初值的類(lèi)型必須與說(shuō)明的類(lèi)型一致。2、在指定初值時(shí),第一個(gè)值賦給下標(biāo)為0的元素。3、不可能跳過(guò)前面的元素給后面的元素賦初值。一維數(shù)組注意:1、如果初值的數(shù)據(jù)個(gè)數(shù)比數(shù)組元素少,那么系統(tǒng)自動(dòng)給后面的元素補(bǔ)賦初值0。2、如果初值的數(shù)據(jù)個(gè)數(shù)比數(shù)組元素多,那么在編譯時(shí)提示出錯(cuò)信息:toomanyinitializers.5、初始化時(shí)不指定數(shù)組長(zhǎng)度。C語(yǔ)言中,可以在初始化時(shí),不指定數(shù)組長(zhǎng)度的個(gè)數(shù)。例:inta[]={1,2,3,4,5};這里,花括號(hào)里列出了5個(gè)初始化數(shù)據(jù),它隱含地定義了該數(shù)組共有5個(gè)元素。等價(jià)于:inta[5]={1,2,3,4,5};字符數(shù)組字符數(shù)組概念的引入C語(yǔ)言中沒(méi)有字符串類(lèi)型的變量,字符串的存儲(chǔ)有兩種方式。將字符串存儲(chǔ)在一個(gè)字符數(shù)組中〔本節(jié)內(nèi)容〕字符數(shù)組1、字符數(shù)組的定義字符數(shù)組的每個(gè)元素存放一個(gè)字符。定義字符數(shù)組的一般格式如:

char數(shù)組名[整型常量表達(dá)式],…如:chara[10];該語(yǔ)句(1)定義了一個(gè)名為a的字符數(shù)組。(2)方括號(hào)中的10規(guī)定該數(shù)組最多容納10個(gè)元素

字符數(shù)組2、數(shù)組元素的初始化(1)字符數(shù)組逐個(gè)元素賦初值。chars[]={‘H’,’e’,’l’,’l’,’o’,’\0’};字符數(shù)組(2)在賦初值時(shí)直接賦字符串常量。chars[]={“hello〞};說(shuō)明:賦初值時(shí),假設(shè)沒(méi)給數(shù)組元素的個(gè)數(shù),系統(tǒng)將按字符串中實(shí)際的字符個(gè)數(shù)來(lái)定義數(shù)組的大小。上述語(yǔ)句等價(jià)于:chars[6]={“hello〞};用字符串常量給字符數(shù)組賦初值時(shí),系統(tǒng)在最后自動(dòng)補(bǔ)上字符串標(biāo)志‘\0’,另外花括號(hào)也可以省略??蓪?xiě)成:chars[]=“hello〞;字符數(shù)組例:chara[5]=“hello〞;(錯(cuò)誤〕注意:1、字符數(shù)組要有足夠的存儲(chǔ)單元存儲(chǔ)字符串。2、上面的語(yǔ)句定義了一個(gè)有5個(gè)元素的字符數(shù)組,但字符串常量中還包含一個(gè)字符串結(jié)束標(biāo)志‘\0’,要占用6個(gè)存儲(chǔ)單元,5個(gè)單元空間不夠用。字符數(shù)組〔3〕給字符數(shù)組元素逐個(gè)賦初值。charstr[9];str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;應(yīng)注意:用字符數(shù)組來(lái)存放字符串時(shí),假設(shè)是逐個(gè)字符賦值給數(shù)組元素,要在最后一個(gè)字符之后加上字符串結(jié)束標(biāo)志‘\0’。用逐個(gè)字符給字符數(shù)組賦初值,對(duì)字符串的存取不太方便。字符數(shù)組〔4〕利用庫(kù)函數(shù)strcpy給字符數(shù)組賦值。

形式:strcpy(字符數(shù)組1,字符數(shù)組2〕;作用是將字符數(shù)組2的內(nèi)容復(fù)制到字符數(shù)組1中,復(fù)制時(shí)將字符數(shù)組2后面的字符串結(jié)束標(biāo)志也復(fù)制到字符數(shù)組1中。例:charstr1[30],str2[30];strcpy(str1,〞howareyou〞);/*將〞howareyou.〞存放到str1*/strcpy(str1,str2);/*將str2存放到str1中*/字符數(shù)組注意:1、不能用賦值語(yǔ)句把字符串整體賦給字符數(shù)組。s1=“hello〞;(錯(cuò)誤〕2、使用strcpy函數(shù)給字符數(shù)組賦值時(shí),字符數(shù)組1必須定義得足夠大,以便可以容納得下被復(fù)制的字符串。字符數(shù)組5、字符數(shù)組的輸入輸出。(1)將字符數(shù)組中的字符串逐個(gè)字符輸入輸出。A、在標(biāo)準(zhǔn)輸入輸出函數(shù)printf和scanf中使用%c格式說(shuō)明符。例:main(){charc[10];intk;for(k=0;k<10;k++)scanf(“%c〞,c[k]);for(k=0;k<10;k++)printf(“%c〞,c[k]);printf(“\n〞);}B、使用getcharputchargetchgetche函數(shù)。字符數(shù)組〔2〕將整個(gè)字符串一次輸入或輸出。用%s格式符。例:charc[]=“china〞;printf(“%s〞,c);

結(jié)果為:china

注意:A、輸出字符不包括結(jié)束符‘\0’;B、用%s格式符輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。printf(“%s〞,c[1]);

錯(cuò)誤字符數(shù)組C、如果數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,也只輸出到遇‘\0’結(jié)束。D、如果一個(gè)字符數(shù)組中包含一個(gè)以上‘\0’,那么遇到和第一個(gè)‘\0’就結(jié)束?!怖胹canf輸入字符串,空格可作為結(jié)束符。〕

例:charstr[13];scanf(“%s〞,str);

輸入howareyou!printf(“%s〞,str);結(jié)果為:how

不能寫(xiě)成:&str字符數(shù)組使用字符串處理函數(shù)1、puts(字符數(shù)組名〕作用是將一個(gè)字符串輸出到終端。例:charstr[]=“China\nBeijing〞;puts(str);結(jié)果為:ChinaBeijing2、gets(字符數(shù)組名〕作用是:從終端輸入一個(gè)字符串到字符數(shù)組,并且得到一個(gè)函數(shù)值。該函數(shù)值是字符數(shù)組的起始地址。例:gets(str);從鍵盤(pán)輸入:computer將computer輸入給字符數(shù)組str.注意:用puts和gets函數(shù)只能輸入或輸出一個(gè)字符串。字符數(shù)組6、其他字符串處理串處理函數(shù)〔1〕、strcat(字符數(shù)組1,字符數(shù)組2〕作用:連接兩個(gè)字符數(shù)組中的字符串,把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后得到一個(gè)函數(shù)值--字符數(shù)組1的地址。例:charstr1[30]={“People’sRepublicof〞};charstr2[]={“China〞};printf(“%s〞,strcat(str1,str2));結(jié)果:People’sRepublicofChina注意〔1〕字符數(shù)組1必須足夠大,以便容納連接后的新字符串?!?〕連接前兩個(gè)字符串都有一個(gè)‘\0’,連接時(shí)將字符串1后面的‘\0’取消,只在新串最后保存一個(gè)‘\0’。字符數(shù)組6、其他字符串處理串處理函數(shù)〔2〕strcmp〔字符串1,字符串2〕作用是比較字符串1和字符串2。比較時(shí)對(duì)兩個(gè)字符串自左向右逐個(gè)字符相比〔按ASCII碼值大小比較〕,直到出現(xiàn)不同的字符或遇到‘\0’為止。如果全部字符相同,那么認(rèn)為兩個(gè)字符串相等,返回值0;假設(shè)出現(xiàn)不相同的字符,那么以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn)。如果字符串1>字符串2,函數(shù)值為一正數(shù)。如果字符串1<字符串2,函數(shù)值為一負(fù)數(shù)。如果字符串1=字符串2,函數(shù)值為0。如果參加比較的兩個(gè)字符串都由英文字母組成,那么有一個(gè)簡(jiǎn)單的規(guī)律:在英文字典中位置在后面的為大;小寫(xiě)字母比大寫(xiě)字母大。注意:對(duì)兩個(gè)字符串比較,不能用這樣的形式:if(str1==str2)printf(“yes〞);

字符數(shù)組(3)strlen(字符數(shù)組〕作用:測(cè)試字符串長(zhǎng)度的函數(shù)。函數(shù)值為字符串中的實(shí)際長(zhǎng)度,不包括‘\0’在內(nèi)。例:charstr[10]=“China〞;printf(“%d〞,strlen(str));輸出結(jié)果為:5〔4〕strlwr(字符串〕作用是將字符串中大寫(xiě)字母換成小寫(xiě)字母?!?〕strupr(字符串〕作用是將字符串中小寫(xiě)字母換成大寫(xiě)字母。字符數(shù)組例:輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間用空格分隔開(kāi)。分析:?jiǎn)卧~的數(shù)目可由空格出現(xiàn)的次數(shù)決定〔連續(xù)的假設(shè)干個(gè)空格作為出現(xiàn)一次空格;一行開(kāi)頭的空格不統(tǒng)計(jì)在內(nèi)〕。如果測(cè)出一個(gè)字符為非空格,而它的前面字符是空格,那么表示“新的單詞開(kāi)始了〞,此時(shí)變量NUM〔單詞數(shù)〕累加1。如果當(dāng)前字符為非空格而前面字符也是非空格,那么意味著仍是原來(lái)單詞的繼續(xù),NUM值不變。設(shè)一個(gè)前面字符是否空格的標(biāo)志flag,當(dāng)flag=0時(shí),表示前一個(gè)字符為空格;flag=1時(shí),前一個(gè)字符為非空格。字符數(shù)組#include<stdio.h>main(){charstr[80];intk,num=0,flag=0;charc;gets(str);

for(k=0;(c=str[k])!=‘\0’;k++)if(c==‘‘)flag=0;elseif(flag==0){f

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論