版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章
數(shù)
組
本章要點(diǎn)一維數(shù)組二維數(shù)組字符數(shù)組第7章數(shù)組本章要點(diǎn)1先看一個(gè)例子:例:給出一個(gè)學(xué)生10門功課的成績(jī),要求計(jì)算平均成績(jī)并打印出低于平均成績(jī)的數(shù)值。用變量來解決問題:main(){intw1,w2,w3,w4,w5,w6,w7,w8,w9,w10;intt;scanf("%d%d%d%d%d%d%d%d%d%d",&w1,&w2,&w3,w4,&w5,&w6,&w7,&w8,&w9,&w10);先看一個(gè)例子:例:給出一個(gè)學(xué)生10門功課的成績(jī),要求計(jì)算平均2t=(w1+w2+w3+w4+w5+w6+w7+w8+w9+w10)/10;if(w1<t)printf("%d\n",w1); if(w2<t)printf("%d\n",w2);if(w3<t)printf("%d\n",w3);if(w4<t)printf("%d\n",w4);if(w5<t)printf("%d\n",w5);if(w6<t)printf("%d\n",w6);if(w7<t)printf("%d\n",w7);if(w8<t)printf("%d\n",w8);if(w9<t)printf("%d\n",w9);if(w10<t)printf("%d\n",w10);}t=(w1+w2+w3+w4+w5+w6+w7+w8+w3用數(shù)組來解決問題:main(){intw[10]; /*定義1個(gè)整型數(shù)組存放成績(jī)*/intt,i;for(i=0;i<10;i++)scanf("%d",&w[i]);for(t=0;i=0;i<10;i++)t=t+w[i];t=t/10;for(i=0;i<10;i++)if(w[i]<t)printf("%d\n",w[i]);}用數(shù)組來解決問題:4數(shù)組及其相關(guān)概念
數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些數(shù)據(jù)被稱為數(shù)組的元素。數(shù)組下標(biāo)數(shù)組及其相關(guān)概念數(shù)組是一組有序的、類型相同的5
每個(gè)數(shù)組都有一個(gè)名字,我們稱之為數(shù)組名。
為標(biāo)識(shí)數(shù)組中的每個(gè)元素,我們需要對(duì)它們進(jìn)行編號(hào),這種編號(hào)我們稱之為數(shù)組元素的下標(biāo)。
由于有了下標(biāo),元素在數(shù)組中的位置(或排列順序)就被唯一地確定下來。我們用數(shù)組名加上下標(biāo)就可以準(zhǔn)確地訪問數(shù)組中的某個(gè)元素了。如:w[0]代表數(shù)組w中的第一個(gè)元素w[9]代表數(shù)組w中的第十個(gè)元素注意:C語(yǔ)言規(guī)定下標(biāo)從0開始。說明:數(shù)組名代表數(shù)組的起始地址。數(shù)組元素在內(nèi)存中是連續(xù)存儲(chǔ)的。每個(gè)數(shù)組都有一個(gè)名字,我們稱之為數(shù)組名。67.1一維數(shù)組7.1.1一維數(shù)組的定義與引用定義一維數(shù)組的一般方式:
類型說明符數(shù)組名[常量表達(dá)式];指明數(shù)組元素的數(shù)據(jù)類型指明數(shù)組所含的元素個(gè)數(shù)例如:inta[10];/*定義的整型數(shù)組a含10個(gè)元素*/floatb[20];/*定義的實(shí)型數(shù)組b含20個(gè)元素*/7.1一維數(shù)組7.1.1一維數(shù)組的定義與引用定義一維7說明:⑴數(shù)組名的命名規(guī)則同變量名的命名規(guī)則一樣;⑵數(shù)組名后用方括號(hào)[],不能用()⑶常量表達(dá)式必須是大于0的整型常量表達(dá)式,不
能包含變量。即C語(yǔ)言不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義,即定義數(shù)組時(shí),數(shù)組的長(zhǎng)度必須是確定的,其大小不依賴程序運(yùn)行過程中變量的值。inta(10);
例如:intn;inta[n]charname[0];floatweight[10.3];floatarray[-100];說明:⑴數(shù)組名的命名規(guī)則同變量名的命名規(guī)則一樣;⑵數(shù)組名后8一維數(shù)組引用的一般方式:
數(shù)組名[下標(biāo)];例數(shù)組元素的引用。main(){ inta[9]; for(i=0;i<9;i++) a[i]=i;/*對(duì)數(shù)組元素賦值*/ for(i=8;i>=0;i--) printf(“%d”,a[i]);/*按下標(biāo)的格式對(duì)數(shù)組元素引用*/}運(yùn)行結(jié)果:876543210
一維數(shù)組引用的一般方式:數(shù)組名[下97.1.2一維數(shù)組的初始化與引用1.定義時(shí)初始化在定義時(shí)賦予初值
如:inta[5]={2,4,6,8,10};存儲(chǔ)形式:存儲(chǔ)單元可知初始化的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]={值,值,………值};7.1.2一維數(shù)組的初始化與引用1.定義時(shí)初始化在定義時(shí)10可以只給部分元素賦值
例如:inta[10]={0,1,2,3,4};
這表示只給前5個(gè)元素賦值,后5個(gè)元素值全為0。如果想給一個(gè)數(shù)組中全部元素值為0,可以寫成inta[10]={0,0,0,0,0,0,0,0,0,0};或inta[10]={0};在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。例如:inta[5]={1,2,3,4,5};也可以寫成inta[]={1,2,3,4,5};可以只給部分元素賦值
例如:11說明:⑴如果在定義一維數(shù)組時(shí)給出了全部元素的初值,則數(shù)組的下標(biāo)允許省略。此時(shí)編譯系統(tǒng)將自動(dòng)根據(jù)初始化數(shù)據(jù)的個(gè)數(shù)來確定數(shù)組的長(zhǎng)度。如:inta[]={2,4,6,8,10};inta[];╳⑵初始化的數(shù)據(jù)個(gè)數(shù)允許少于數(shù)組的長(zhǎng)度,但不
能多于數(shù)組的長(zhǎng)度。當(dāng)初始化的數(shù)據(jù)個(gè)數(shù)(至少要有一個(gè))少于數(shù)組的長(zhǎng)度時(shí),未初始化部分將被編譯系統(tǒng)自動(dòng)用0賦值。如:inta[5]={2,4};
相當(dāng)于:a[0]=2,a[1]=4,a[2]=0,a[3]=0,a[4]=0inta[5]={1,2,3,4,5,6,7,8};╳說明:⑴如果在定義一維數(shù)組時(shí)給出了全部元素的初值,如:in122.使用其它方法初始化⑵利用輸入語(yǔ)句初始化main(){charas[26];inti;for(i=0;i<26;i++)scanf("%c",&as[i]);…...}⑴利用賦值語(yǔ)句初始化main(){charas[26],ch;for(ch='A';ch<='Z';ch++)as[ch-'A']=ch;…...}2.使用其它方法初始化⑵利用輸入語(yǔ)句初始化⑴利用賦值語(yǔ)句初133.一維數(shù)組的引用
數(shù)組元素類似于單個(gè)變量,可以自由地存取。但是,它與一般變量相比,有以下特殊之處:⑴數(shù)組元素是通過數(shù)組名加上該元素在數(shù)組中的位置(即數(shù)組元素的下標(biāo))來訪問的。
表示形式:
數(shù)組名[下標(biāo)]
如:a[3]
其中,下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。如:inta[10];floati=3;a[i]=10;3.一維數(shù)組的引用數(shù)組元素類似于單個(gè)變量,14⑵
數(shù)組元素的下標(biāo)是從0開始的。如:inta[2];scanf(“%d,%d”,&a[1],&a[2]);⑵數(shù)組元素的下標(biāo)是從0開始的。如:inta[2];15⑶
數(shù)組元素的賦值是逐個(gè)元素進(jìn)行的,不允許把一個(gè)數(shù)組作為一個(gè)整體賦給另一個(gè)數(shù)組。除了數(shù)組初始化外,也不允許用在花括號(hào)中列表的方式對(duì)數(shù)組整體賦值。例1:inta[5]={2,4,6,8,10},b[5];b[5]=a[5];例2:inta[5];a[5]={2,4,6,8,10};⑷
數(shù)組名a代表的是數(shù)組a在內(nèi)存中的首地址,因此,可以用數(shù)組名a來代表數(shù)組元素a[0]的地址。
等價(jià)于scanf(“%d”,&a[0]);scanf(“%d”,a);⑶數(shù)組元素的賦值是逐個(gè)元素進(jìn)行的,不允許把一個(gè)數(shù)組作為一個(gè)16一維數(shù)組應(yīng)用舉例例1:從鍵盤上輸入10個(gè)實(shí)型數(shù)存入數(shù)組,然后按輸入順序的逆序輸出這10個(gè)數(shù)。main(){floata[10];inti;for(i=0;i<10;i++)scanf(“%f”,&a[i]);for(i=9;i>=0;i--)printf(“%10.2f”,a[i]);}一維數(shù)組應(yīng)用舉例例1:從鍵盤上輸入10個(gè)實(shí)型數(shù)存入數(shù)組,然m17例:用數(shù)組來處理求斐波納契數(shù)列:1,1,2,3,5,8…的前20個(gè)數(shù)。main(){intf[20]={1,1};for(i=2;i<20;i++)/*f[2]是數(shù)組第3個(gè)元素*/f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){printf(“%10d”,f[i]);if(i%2==0)printf(“\n”);/*每行打印2個(gè)數(shù)*/}}數(shù)學(xué)表示:f(0)=f(1)=1,f(n)=f(n-2)+f(n-1)例:用數(shù)組來處理求斐波納契數(shù)列:main()數(shù)學(xué)表示:f(018例:用冒泡法對(duì)10個(gè)數(shù)排序(由小到大)。冒泡法的思路是:將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前頭。
988888895555559444444922222290000009第一輪排序,比較了5次,獲得第一次結(jié)果。剩數(shù)輪數(shù)5142332415例:用冒泡法對(duì)10個(gè)數(shù)排序(由小到大)。冒泡法的思路是:將相19main(){inta[11],i,j,t;printf(“Input10numbers:\n”);for(i=1;i<11;i++)scanf(“%d”,&a[i]);printf(“\n”);
for(j=1;j<=9;j++)/*控制9輪排序*/for(i=1;i<=10-j;i++)/*每輪排序比較次數(shù)*/if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}for(i=1;i<=10;i++)printf("%d",a[i]);}main()207.2二維數(shù)組先看一個(gè)例子:某校近三年招收各專業(yè)畢業(yè)生情況如下:
計(jì)算機(jī)電子管理數(shù)學(xué)19999040803020001005090402001954510050要把這些數(shù)據(jù)組織起來,可以有兩種選擇:
⑴按從左到右從上到下的順序存入一個(gè)一維數(shù)組中。(查詢困難)
⑵每年用一個(gè)一維數(shù)組,把這些數(shù)據(jù)分別存入三個(gè)數(shù)組中。(增加一年數(shù)據(jù)困難)7.2二維數(shù)組先看一個(gè)例子:217.2.1二維數(shù)組的定義與引用定義二維數(shù)組的一般方式:類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];
如:inta[3][4];存儲(chǔ)形式:
二維數(shù)組在內(nèi)存中是按行的順序存放的,即先存放第一行的元素,再存放第二行的元素。
7.2.1二維數(shù)組的定義與引用定義二維數(shù)組的一般方式:類22說明:二維數(shù)組除了維數(shù)比一維數(shù)組多一維外,其它性質(zhì)與一維數(shù)組是全部類似的。看看下面寫法是否正確?
①inta[0][3];
用于定義數(shù)組長(zhǎng)度的常量表達(dá)式的值必須是大于0的正整數(shù)。
②inti=3,j=4;
inta[i][j];
定義數(shù)組元素的個(gè)數(shù)必須使用常量表達(dá)式,而不能使用變量。說明:二維數(shù)組除了維數(shù)比一維數(shù)組多一維外,其它性質(zhì)與一維數(shù)23二維數(shù)組的引用
與引用一維數(shù)組元素一樣,是用下標(biāo)法引用二維數(shù)組元素的。表示形式:數(shù)組名[行下標(biāo)][列下標(biāo)]其中,行下標(biāo)和列下標(biāo)是整型常量、整型變量或整型表達(dá)式。其編號(hào)是從0開始的。例如:若有inta[2*5][3*4],i=15;
則使用a[3*3][0],a[1][i-5]都是合法的。說明:數(shù)組名a代表的是數(shù)組a在內(nèi)存中的首地址,因此,可以用數(shù)組名a來代表數(shù)組元素a[0][0]的地址。二維數(shù)組的引用與引用一維數(shù)組元素一樣,是用下247.2.2二維數(shù)組的初始化
這里主要介紹定義時(shí)初始化,其它方法初始化和一維數(shù)組類似。定義時(shí)初始化有兩種方法:⑴分行初始化
例如:inta[2][3]={{1,2,3},{4,5,6}};⑵線性初始化
即按數(shù)組元素在內(nèi)存中排列的順序賦初值。
例如:inta[2][3]={1,2,3,4,5,6};7.2.2二維數(shù)組的初始化這里主要介紹定義時(shí)初始化25(3)只對(duì)部分賦值inta[3][4]={{1},{4,3},{1,2}};這種賦值方法相當(dāng)于:inta[3][4]={{1,0,0,0},{4,3,0,0},{1,2,0,0}};系統(tǒng)自動(dòng)將沒有賦值的元素賦值成0。inta[3][4]={{1},{4}};相當(dāng)于inta[3][4]={{1,0,0,0},{4,0,0,0},{0,0,0,0}};對(duì)于沒有大括號(hào)的,系統(tǒng)自動(dòng)將此行元素賦值為0。(4)如果將數(shù)組的所有元素全部賦值的話,可以省掉第一維的長(zhǎng)度。例如:inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};(3)只對(duì)部分賦值26說明:⑴在對(duì)二維數(shù)組初始化時(shí),也可以只對(duì)部分?jǐn)?shù)組元素初始化,未被初始化的數(shù)組元素將自動(dòng)賦0。inta[2][3]={{5,6},{7,8}};inta[2][3]={5,6,7,8};如:得到的數(shù)組為:560780得到的數(shù)組為:567800⑵在對(duì)二維數(shù)組初始化時(shí),如果對(duì)全部元素都賦初值,或分行賦初值(每行至少一個(gè)數(shù)據(jù)),則可以省略第一維數(shù)組長(zhǎng)度。但是,第二維數(shù)組長(zhǎng)度不允許省略。如:inta[][3]={1,2,3,4,5,6,7,8,9};inta[][4]={{1,2},{3,4,5,6},{7}};系統(tǒng)按3行處理inta[][10]={1,0};floatf[2][]={1.1,2.2};說明:⑴在對(duì)二維數(shù)組初始化時(shí),也可以只對(duì)部分?jǐn)?shù)組元素初始化277.2.3二維數(shù)組應(yīng)用舉例例1:使用數(shù)組保存“九九表”,然后輸出。main(){inta99[10][10],i,j;for(i=1;i<10;i++)for(j=1;j<=i;j++)a99[i][j]=i*j;for(i=1;i<10;i++){for(j=1;j<=i;j++)printf(“%6d",a99[i][j]);printf(“\n”);}}7.2.3二維數(shù)組應(yīng)用舉例例1:使用數(shù)組保存“九九表”,然28例:矩陣的轉(zhuǎn)置。(書中例7.4)a=123456b=142536轉(zhuǎn)換成main(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf("arraya:\n");for(i=0;i<=1;i++){for(j=0;j<=2;j++){printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}printf("\narrayb:\n");for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%6d",b[i][j]);printf("\n");}}例:矩陣的轉(zhuǎn)置。(書中例7.4)a=123b=129例:求3*4數(shù)組中的最大值及其下標(biāo)。main(){intmax,row,colum,i,j;inta[][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf("max=%d,row=%d,colum=%d",max,row,colum);}例:求3*4數(shù)組中的最大值及其下標(biāo)。main()307.3多維數(shù)組介紹例如:我們定義一個(gè)三維數(shù)組:intm[2][3][4];其中常量表達(dá)式由原來的兩個(gè)變?yōu)槿齻€(gè),把這個(gè)三維數(shù)組按順序進(jìn)行展開如下:
m[0][0][0],m[0][0][1],m[0][0][2],m[0][0][3]m[0][1][0],m[0][1][1],m[0][1][2],m[0][1][3]m[0][2][0],m[0][2][1],m[0][2][2],m[0][2][3]m[1][0][0],m[1][0][1],m[1][0][2],m[1][0][3]m[1][1][0],m[1][1][1],m[1][1][2],m[1][1][3]m[1][2][0],m[1][2][1],m[1][2][2],m[1][2][3]定義多維數(shù)組的一般方式:類型說明符數(shù)組名[表達(dá)式1][表達(dá)式2]…[表達(dá)式n];7.3多維數(shù)組介紹例如:我們定義一個(gè)三維數(shù)組:317.4字符數(shù)組和字符串7.4.1字符數(shù)組的定義與初始化當(dāng)數(shù)組的元素類型為字符型時(shí),被稱為字符數(shù)組。如:charc[10];則c為字符數(shù)組。
字符數(shù)組的定義、初始化和元素的引用與一般的數(shù)組相同。如:main(){charch[5]={‘c’,‘h’,‘i’,‘n’,‘a(chǎn)’};for(i=0;i<5;i++)printf(“%c”,ch[i]);}7.4字符數(shù)組和字符串7.4.1字符數(shù)組的定義與初始化32說明:⑴定義字符數(shù)組的類型說明符一般為char,如:charc[10];由于字符型與整型的互相通用性,因此,上面定義也可改為:intc[10];⑵初始化的字符個(gè)數(shù)允許少于字符數(shù)組的長(zhǎng)度,但不能多于字符數(shù)組的長(zhǎng)度。當(dāng)初始化的字符(至少要有一個(gè))少于字符數(shù)組的長(zhǎng)度時(shí),未初始化部分將被編譯系統(tǒng)自動(dòng)用空字符‘\0’
賦值。如:intc[8]={‘H’,‘e’,‘l’,‘l’,‘o’};則:c[0]=‘H’,c[1]=‘e’,c[2]=‘l’,c[3]=‘l’,c[4]=,‘o’c[5]=‘\0’,c[6]=‘\0’,c[7]=‘\0’說明:⑴定義字符數(shù)組的類型說明符一般為char,如:⑵初始337.3.3字符串與字符數(shù)組
字符串常量是用雙引號(hào)括起來的一串字符,由系統(tǒng)自動(dòng)加上一個(gè)字符串結(jié)束標(biāo)志‘\0’。它占內(nèi)存,但不記入字符串長(zhǎng)度。如:“china”占內(nèi)存6個(gè)字節(jié),但字符串長(zhǎng)度是5在C語(yǔ)言中用字符數(shù)組來處理字符串,每個(gè)元素存放一個(gè)字符型數(shù)據(jù)。
字符型數(shù)組可用一般數(shù)組的初始化方式初始化外,還可以使用字符串常量初始化:如:charmessage[]={“Hello”};√或charmessage[]=“Hello”;√(這時(shí),字符數(shù)組長(zhǎng)度是6,字符串長(zhǎng)度是5。)7.3.3字符串與字符數(shù)組字符串常量是用雙引號(hào)括34注意:它與一般初始化方式:charmessage[]={‘H’,‘e’,‘l’,‘l’,‘o’};初始化的結(jié)果是不同的。
用一般初始化方式結(jié)果:
‘H’‘e’‘l’‘l’‘o’用字符串常量初始化:
‘H’‘e’‘l’‘l’‘o’‘\0’說明:字符數(shù)組本身并不要求它的最后一個(gè)元素一定是‘\0’,例如:charch[2]={‘A’,‘B’};是合法的。當(dāng)定義字符數(shù)組用字符串常量賦初值時(shí),最后有一個(gè)元素其值為‘\0’。為了使處理方法一致,在字符數(shù)組中也常常人為地加上一個(gè)值為‘\0’的元素。如:charmessage[]={‘H’,‘e’,‘l’,‘l’,‘o’,‘\0’};注意:它與一般初始化方式:用一般初始化方式結(jié)果:‘H’35例輸出一個(gè)鉆石圖形main(){chardiamond[][5]={{‘’,’’,’*’},{‘’,’*’,’’,’*’},{‘*’,’’,’’,’’,”*’},{‘’,’*’,’’,’*’},{‘’,’’,’*’}};inti,j;for(i=0;i<5;i++){for(j=0;j<5;j++)printf(“%c”,diamond[i][j]);printf(“\n”);}}
********例輸出一個(gè)鉆石圖形*36main(){chara[5];inti=0;while(i<=4){scanf(“%c”,&a[i]);i++;}}}輸入數(shù)據(jù):abccdgmain(){chara[5];inti=0scanf(“%s”,a);printf(“%s”,a);}a[0]a[1]a[2]a[3]a[4]abc\0\0a[1]a[2]a[3]a[4]abccmain()輸入數(shù)據(jù):a[0]a[1]a[2]a[3]a[4377.3.4字符數(shù)組的輸入輸出字符數(shù)組的輸入輸出可以有以下兩種方法:⑴逐個(gè)字符輸入輸出用格式符“%c”輸入或輸出一個(gè)字符。⑵將整個(gè)字符串一次輸入或輸出。
用格式符“%s”輸入輸出字符串。例如:charc[]=“Hello”;printf(“%s”,c);注意:⑴輸出字符不包括結(jié)束符‘\0’。⑵用“%s”格式符輸出字符串時(shí),printf函數(shù)的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。7.3.4字符數(shù)組的輸入輸出字符數(shù)組的輸入輸出可以有以下兩38⑶輸出字符數(shù)組時(shí),遇到第一個(gè)‘\0’,輸出就結(jié)束。⑷用“%s”格式符輸入字符串時(shí),scanf函數(shù)的輸出項(xiàng)
是字符數(shù)組名時(shí),不要再加地址符&,因?yàn)镃語(yǔ)言中數(shù)組名代表該數(shù)組的起始地址。如:charstr[10];scanf(“%s”,&str);⑸用“%s”格式符輸入字符串時(shí),scanf函數(shù)的輸出項(xiàng)是
字符數(shù)組名時(shí),從鍵盤輸入的字符串應(yīng)短于已定義
的字符數(shù)組的長(zhǎng)度。系統(tǒng)自動(dòng)在后面加個(gè)‘\0’結(jié)束符。⑹利用scanf函數(shù)輸入多個(gè)字符串時(shí),是以空格、回車、跳格分隔。因此不要試圖利用scanf函數(shù)從鍵盤輸入Howareyou?賦給一個(gè)字符串。⑶輸出字符數(shù)組時(shí),遇到第一個(gè)‘\0’,輸出就結(jié)束。⑷用“%397.3.5字符數(shù)組處理函數(shù)1.字符串輸入gets()函數(shù)使用形式:
gets(字符數(shù)組)功能:從終端輸入一個(gè)字符串(直到回車鍵)到字符數(shù)組中。例如:charstr[20];gets(str);若從鍵盤輸入:HelloWorld!則將字符串“HelloWorld!”送到字符數(shù)組str中。7.3.5字符數(shù)組處理函數(shù)1.字符串輸入gets()函數(shù)使402.字符串輸出puts()函數(shù)使用形式:
puts(字符數(shù)組)功能:將一個(gè)字符串輸出到終端。在輸出時(shí),將字符串結(jié)束標(biāo)志轉(zhuǎn)換成‘\n’,即輸出完字符串后換行。例如:charstr[]={“China\nBeijing”};puts(str);輸出:ChinaBeijing注意:使用puts和gets函數(shù)前,要用預(yù)編譯命令:#include“stdio.h”。2.字符串輸出puts()函數(shù)使用形式:puts(字符413.求字符串長(zhǎng)度strlen()函數(shù)使用形式:
strlen(字符數(shù)組)功能:計(jì)算字符串長(zhǎng)度,函數(shù)值是字符串中‘\0’之前的字符個(gè)數(shù)(不包括‘\0’字符)。例如:charstr[80]={“ab\n\\012/\\\””};printf(“%d”,strlen(str));輸出:10
charstr[80]={“ab\n\0y\012/\\\””};printf(“%d”,strlen(str));輸出:3注意:使用這些函數(shù)前,要用#include“string.h”3.求字符串長(zhǎng)度strlen()函數(shù)使用形式:str424.字符串連接strcat()函數(shù)使用形式:
strcat(字符數(shù)組1,字符串2)功能:連接兩個(gè)字符串,把字符串2連接到字符串1的后面,連接后的字符串放在字符數(shù)組1中。說明:⑴字符數(shù)組1必須足夠大以便能夠容納字符串2。
⑵連接時(shí)只在新串最后保留一個(gè)‘\0’。
4.字符串連接strcat()函數(shù)使用形式:strc435.字符串比較strcmp()函數(shù)使用形式:
strcmp(字符串1,字符串2)其中,字符串可以是字符串常量或字符數(shù)組。功能:比較兩個(gè)字符串。比較的原則:兩個(gè)字符串從左至右逐個(gè)對(duì)應(yīng)字符按其ASCII碼值大小相比較,直到出現(xiàn)不同的字符或遇到‘\0’為止。若設(shè)n=strcmp(字符串1,字符串2);n>0;串1>串2則:n=n=0;串1=串2n<0;串1<串25.字符串比較strcmp()函數(shù)使用形式:strc44例如:charstr1[20],str2[10];
(將str1[20]和str2[10]賦初值)
if(strcmp(str1,str2)>0)puts(str1);注意:不能寫成if(str1>str2)strcmp(“China”,”Korea”);例如:charstr1[20],str2[10];注意456.字符串復(fù)制strcpy()函數(shù)使用形式:
strcpy(字符數(shù)組1,字符串2)功能:將字符串2復(fù)制到字符數(shù)組1中(其后自動(dòng)加一個(gè)‘\0’)。例如:charstr1[20],str2[10];
strcpy(str1,“helloworld”);strcpy(str2,str1);其中,字符串2可以是字符串常量或字符數(shù)組。6.字符串復(fù)制strcpy()函數(shù)使用形式:st46說明:⑴字符數(shù)組1必須足夠大以便能夠容納被復(fù)制的字符串。⑵不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接賦值給一個(gè)字符數(shù)組。例如:charstr1[20],str2[20];str1={“hello”};str2=str1;7.將字符串中大寫字母換成小寫字母strlwr()函數(shù)使用形式:
strlwr(字符串)8.將字符串中小寫字母換成大寫字母strupr函數(shù)使用形式:
strupr(字符串)說明:⑴字符數(shù)組1必須足夠大以便能夠容納被⑵不能用賦值語(yǔ)句將47例1:統(tǒng)計(jì)字符串中的單詞數(shù)。#include<stdio.h>main(){charstring[81],c;inti,num=0,word=0;gets(string);for(i=0;string[i]!='\0';i++)if(string[i]=='')word=0;elseif(word==0){word=1;num++;}printf(“\nThereare%dwords.”,num);}Iamaboy7.4數(shù)組綜合實(shí)例
例1:統(tǒng)計(jì)字符串中的單詞數(shù)。#include<stdio48例2:3個(gè)字符串求最大的字符串
。#include<stdio.h>#include<string.h>main(){chars[3][20],s1[20];inti,j;for(i=0;i<3;i++)gets(s[i]);if(strcmp(s[0],s[1])>0)strcpy(s1,s[0]);elsestrcpy(s1,s[1])if(strcmp(s[2],s1)>0)strcpy(s1,s[2]);puts(s1);}CHINAHOLLANDAMERICA例2:3個(gè)字符串求最大
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度四川省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師押題練習(xí)試題B卷含答案
- 2025起重機(jī)安裝合同范本
- 牽伸卷繞機(jī)項(xiàng)目可行性研究報(bào)告評(píng)審方案設(shè)計(jì)2025年標(biāo)準(zhǔn)案例范文
- 中國(guó)數(shù)據(jù)處理行業(yè)分析報(bào)告
- 【可行性報(bào)告】2025年高低壓成套開關(guān)柜相關(guān)行業(yè)可行性分析報(bào)告
- 中國(guó)軟膠囊行業(yè)市場(chǎng)運(yùn)行現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 2025年中國(guó)注射用頭孢西丁鈉行業(yè)市場(chǎng)深度評(píng)估及投資戰(zhàn)略規(guī)劃報(bào)告
- 2020-2025年中國(guó)溫泉旅游行業(yè)發(fā)展趨勢(shì)預(yù)測(cè)及投資戰(zhàn)略咨詢報(bào)告
- 2025一般貨物進(jìn)口合同
- “十三五”重點(diǎn)項(xiàng)目-對(duì)甲苯磺酰甲基異腈項(xiàng)目節(jié)能評(píng)估報(bào)告(節(jié)能專)
- 浙江省紹興市2023-2024學(xué)年高一上學(xué)期1月期末考試英語(yǔ)試題(解析版)
- 事業(yè)單位獎(jiǎng)勵(lì)審批表主要事跡教師300字范文六篇
- 煤氣柜試運(yùn)行總結(jié)
- 人際溝通:協(xié)調(diào)職場(chǎng)關(guān)系提高工作效率
- 網(wǎng)絡(luò)切片技術(shù)概述
- 2024年度醫(yī)院各科室醫(yī)務(wù)人員述職報(bào)告之皮膚科課件
- 《急性心梗的自救》課件
- 中成藥手冊(cè)完整版本
- 2023-2024學(xué)年成都市金牛區(qū)九年級(jí)上英語(yǔ)(一診)期末考試題(含答案)
- 2023年MC主管年終業(yè)務(wù)工作總結(jié)
- 廣東省物業(yè)管理?xiàng)l例2024:業(yè)主大會(huì)與業(yè)主委員會(huì)組織規(guī)定
評(píng)論
0/150
提交評(píng)論