




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章數(shù)組
5.1一維數(shù)組一維數(shù)組是由同類型數(shù)據(jù)按照線性次序順次排列而成的構(gòu)造類型。5.1.1一維數(shù)組的定義格式
類型說明符數(shù)組名[常量表達(dá)式];例如,語句“floata[6],b[10];”表示定義了一個可存放6個float類型數(shù)據(jù)的一維數(shù)組a和一個可存放10個float類型數(shù)據(jù)的一維數(shù)組b。說明:
①數(shù)組名應(yīng)符合標(biāo)識符的命名規(guī)則,例如,a12、gain_ratio是合法的數(shù)組名。
②方括號內(nèi)的常量表達(dá)式表示數(shù)組元素的個數(shù),即數(shù)組長度??梢允钦统A炕蛘统A勘磉_(dá)式,也可以是符號常量,但不能包含變量。
③數(shù)組的數(shù)據(jù)類型既可以是基本類型,也可以是構(gòu)造類型等。
④C編譯系統(tǒng)為數(shù)組分配連續(xù)的內(nèi)存單元。數(shù)組元素的相對次序由下標(biāo)來表示。數(shù)組元素的下標(biāo)是從0開始的整數(shù)。如上面定義的數(shù)組a的存儲示意圖如圖5.1所示:5.1.2一維數(shù)組的引用在C語言中不能引用整個數(shù)組,只能引用單個數(shù)組元素。一個數(shù)組元素就是相當(dāng)于一個變量,它的使用與同類型的普通變量是相同的。但數(shù)組元素特定的引用形式,會給編程帶來很多方便。一維數(shù)組元素的引用形式為:
數(shù)組名[下標(biāo)]說明:①數(shù)組名后方括號內(nèi)是數(shù)組下標(biāo),下標(biāo)表示該元素是數(shù)組的第幾個元素。數(shù)組名后面的方括號內(nèi)的內(nèi)容只有在數(shù)組定義時才是數(shù)組的長度,其它時候都是數(shù)組下標(biāo)。②數(shù)組元素的下標(biāo)是整型的常量、變量或表達(dá)式。下標(biāo)的取值范圍是[0,數(shù)組長度-1]的整型值。③C程序運行時,編譯系統(tǒng)并不檢查數(shù)組元素的下標(biāo)是否越界,需要編程人員自己保證數(shù)組元素的下標(biāo)不要越界。
例如,語句floata[8];intx=2;數(shù)組元素a[0]、a[6]、a[5+1]、a[x]、a[3*x]都是合法引用;而a[-5]、a[8]、a[5.2]是非法的引用方式。注意,a[8]雖然非法,但是編譯系統(tǒng)不報錯。對a[8]的操作實際是對內(nèi)存其他空間的操作,因此可能造成嚴(yán)重后果。
5.1.3一維數(shù)組的初始化數(shù)組的初始化就是給數(shù)組元素賦初值。數(shù)組的初始化操作既可以在數(shù)組定義之后進(jìn)行,也可以在數(shù)組定義時完成。如果在數(shù)組定義之后進(jìn)行初始化操作,則只能對每個數(shù)組元素一一賦值。例如,
intarr[10],i;for(i=0;i<10;i++)arr[i]=i;
如果在定義數(shù)組時完成數(shù)組的初始化操作,則需要將數(shù)組元素的初值依次放在一對花括弧中,并用賦值號與數(shù)組連接。定義數(shù)組時賦初值的形式為:類型說明符數(shù)組名[常量表達(dá)式]={初值列表};說明:①花括弧內(nèi)各個初值之間用逗號分隔,數(shù)值類型必須與數(shù)組類型一致。系統(tǒng)將按初值的排列順序給數(shù)組元素賦值。例如,語句“intarr[10]={0,1,2,3,4,5,6,7,8,9};”在定義數(shù)組arr的同時,將0、1、2、3、4、5、6、7、8、9依次賦給數(shù)組元素arr[0]、arr[1]、arr[2]、arr[3]、arr[4]、arr[5]、arr[6]、arr[7]、arr[8]、arr[9]。②花括弧中初值的數(shù)量必須小于等于數(shù)組長度。當(dāng)初值數(shù)量小于數(shù)組長度時,數(shù)值型數(shù)組的后面沒有初值的元素由系統(tǒng)自動賦值為0。例如,語句intarr[6]={0,1,2};arr[0]、arr[1]、arr[2]的值依次為0、1、2,其它元素即arr[3]、arr[4]、arr[5]的值均為0。③若給數(shù)組的所有元素賦初值,可以省略數(shù)組的長度。系統(tǒng)會根據(jù)所賦初值的個數(shù)確定數(shù)組的長度。例如,語句intarr[]={1,2,3,4,5,6,7,8,9,10};定義數(shù)組arr的長度為10,相當(dāng)于語句“intarr[10]={1,2,3,4,5,6,7,8,9,10};”。5.1.4一維數(shù)組應(yīng)用舉例【例5.1】求10個整數(shù)的平均值。解題思路:輸入10個整數(shù)→求和→再求平均值→輸出結(jié)果。#include“stdio.h”voidmain(){inta[10],i;floatave,sum;printf("\npleaseenter10numbers:\n");
for(i=0;i<10;i++) /*輸入元素*/scanf("%d",&a[i]);sum=0;for(i=0;i<10;i++) /*求和*/sum=sum+a[i];ave=sum/10; /*求平均值*/for(i=0;i<10;i++)printf("%6d",a[i]);printf("\naverage=%7.2f",ave);}
【例5.2】編寫程序,找出10個整數(shù)中的最小值及其位置。解題思路:首先輸入10個整數(shù),然后找出其中的最小值及其位置,最后輸出結(jié)果。其中最主要的功能是求最小值及其位置,完成這一功能的主要步驟為:①定義變量min記錄最小值的位置即下標(biāo)號,程序開始時假定第一個數(shù)為最小值,也就是位置min為0;②將min位置的數(shù)和數(shù)組的下一個數(shù)進(jìn)行比較,如果min位置上的數(shù)大,則更改min值為更小數(shù)的位置;③比較完數(shù)組中所有的數(shù),位置min上的數(shù)就是最小值,否則轉(zhuǎn)向②繼續(xù)執(zhí)行。設(shè)數(shù)組x的10個數(shù)為3、2、7、1、4、8、5、11、4、9,則尋找最小值及其位置的過程應(yīng)該為:32714851149初始min=0;↑min32714851149i=1時,x[i]<x[min],修改min指向1↑min32714851149i=2時,x[i]>x[min],min不變↑min32714851149i=3時,x[i]<x[min],修改min指向3↑min32714851149i=4時,x[i]>x[min],min不變↑
min……同樣方式,將x[min]依次與x[5]、x[6]、x[7]、x[8]、x[9]相比較。每次比較均為x[min]小,因此min值不變,最終min的值為3。#include“stdio.h“/*例5.2程序*/voidmain(){intx[10],i,min;printf("\npleaseenter10numbers:");for(i=0;i<10;i++)/*輸入10個元素*/scanf("%d",&x[i]);min=0;/*給min置初值*/for(i=1;i<10;i++)/*從第1個元素開始查找最小值位置*/if(x[i]<x[min])min=i;printf("最小的數(shù)為:x[%d]=%d",min,x[min]);/*輸出最小值*/}輸入3、2、7、1、4、8、5、11、4、9的程序運行結(jié)果為:pleaseenter10numbers:32714851149↙最小的數(shù)為:isx[3]=1類似地,請思考如何查找一個數(shù)列中最大值的位置
【例5.3】在遞減的有序數(shù)列中,插入一個數(shù)x,使得數(shù)列仍然有序(如果有相同的數(shù)則不插入)。本題相當(dāng)于在一個有序的數(shù)組中尋找合適的位置插入一個元素。問題的解決可分為兩個步驟:①尋找插入位置:由于是遞減的序列,所以插入位置應(yīng)該是在第一個小于x的數(shù)組元素的前面(假定找到的位置為k);②如果第k個元素等于x,則不須插入,否則執(zhí)行插入操作:第k個元素及其后面的元素都后移一位。插入元素在k位置。#defineN11#include"stdio.h"voidmain(){intarr[N],x,j,k;printf("\npleaseenterthearray(%d):",N-1);for(j=0;j<N-1;jscanf("%d",&arr[j]);++)/*輸入數(shù)組元素*/printf("pleaseenterthenumber:");scanf("%d",&x);/*輸入待插入元素*/for(j=0;x<=arr[j]&&j<N-1;j++);/*尋找插入位置*/k=j;/*k記錄插入位置*/if(arr[k]==x&&k<N-1)/*數(shù)已存在,不執(zhí)行插入,原樣輸出數(shù)組*/for(j=0;j<N-1;j++)printf("%4d",arr[j]);else{for(j=N-2;j>=k;j--)arr[j+1]=arr[j];/*移動插入點以后的元素*/arr[k]=x;/*插入元素*/printf("thearrayis:\n");for(j=0;j<N;j++)printf("%4d",arr[j]);/*輸出數(shù)組*/}}若數(shù)列為67、43、39、33、30、28、26、15、10、7,輸入27時的程序運行結(jié)果為:pleaseenterthearray(10):6743393330282615107↙pleaseenterthenumber:27↙thearrayis:674339333028272615107請考慮,移動元素可不可以從前面的元素開始移動(即先移動插入位置的元素,最后移動最后一個元素),為什么?如果可以有重復(fù)數(shù)據(jù),程序該如何編寫?【例5.4】用冒泡法對10個數(shù)進(jìn)行排序(由小到大)。冒泡法思路是,從前到后掃描數(shù)據(jù)序列,比較相鄰兩個數(shù)的大小,將小的數(shù)調(diào)到前頭,大的數(shù)沉底。如圖5.2988888895542559444444922222290000009第1次第2次第3次第4次第5次結(jié)果假設(shè)有6個數(shù)據(jù),第一次將8和9進(jìn)行比較后對調(diào),第二次將9(下沉了一位)和5進(jìn)行比較后對調(diào),第三次……,直到所有的數(shù)均比較完畢后,9已沉到了最底層,這時,最小的數(shù)0上浮了一位,經(jīng)第一趟(共5次)后,已得到最大的數(shù)。然后進(jìn)行第二趟對余下來的數(shù)據(jù)進(jìn)行比較我,第二趟要比第一趟少比較1次,即只需4次即可比較出最大的數(shù)。依次類推,比較完畢后得到的就是按順序排列的數(shù)據(jù)。#include“stdio.h“/*例5.4程序
*/voidmain(){inta[10];inti,j,t;printf("\ninput10numbers:\n");for(i=0;i<10;i++) scanf("%d",&a[i]);/*讀入10個數(shù),放入a數(shù)組中*/printf("\n");for(j=0;j<9;j++)/*控制比較的趟數(shù),共9趟*/for(i=0;i<9-j;i++)/*一趟的比較,沉一個最大的數(shù)*/if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("thesortednumbers:\n");for(i=0;i<10;i++)printf("%d",a[i]); }5.2二維數(shù)組含有兩個下標(biāo)的數(shù)組稱為二維數(shù)組,其中的數(shù)據(jù)是按照行列的格式排列的,即數(shù)據(jù)分為若干行、若干列。C語言規(guī)定,二維數(shù)組的行下標(biāo)和列下標(biāo)均是從0開始計算的。5.2.1二維數(shù)組的定義格式類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];例如,語句“intb[4][3];”表示定義了一個具有4行3列的整型數(shù)據(jù)的二維數(shù)組b。說明:①二維數(shù)組定義中,數(shù)組名、數(shù)據(jù)類型的定義方式和一維數(shù)組相同,不同的只是數(shù)組名后面緊跟兩個方括號,兩個常量表達(dá)式,常量表達(dá)式1表示數(shù)組的行數(shù),常量表達(dá)式2表示每行數(shù)據(jù)的個數(shù),即列數(shù)。數(shù)組的元素個數(shù)就是兩個常量表達(dá)式之積。②二維數(shù)組只是在邏輯上是二維的,從存儲上看,二維數(shù)組仍是存儲在一維線性空間。C語言中,按照行優(yōu)先方式存儲二維數(shù)組,即先存放第0行的元素,再連續(xù)存放第1行的元素……。例如,上面定義的b是一個4行3列的數(shù)組,它在內(nèi)存中的存儲示意圖如圖5.3,是一維線性存儲空間。5.2.2二維數(shù)組的引用二維數(shù)組也只能引用單個數(shù)組元素,不能引用整個數(shù)組。二維數(shù)組元素的引用形式為:數(shù)組名[下標(biāo)1][下標(biāo)2]
二維數(shù)組的下標(biāo)可以是整型的變量、常量或表達(dá)式。第一維下標(biāo)的取值范圍是[0,第一維長度-1],第二維下標(biāo)的取值范圍是[0,第二維長度-1]。例如,在語句“intb[4][3];”之后引用數(shù)組b的元素。b[0][2]、b[1+1][1]、b[i][j](i、j為整型變量)是合法的引用方式;而b[2][3]、b[1.2][2]、b[6][0]、b[1,2]、b[2],[0]、b(1,2)、b(3)(1)是非法的引用方式。5.2.3二維數(shù)組的初始化
二維數(shù)組的初始化既可以在數(shù)組定義之后進(jìn)行,也可以在定義數(shù)組的同時完成。
如果定義之后進(jìn)行數(shù)組的初始化操作,則只能對每個數(shù)組元素一一賦值,例如,intarr[4][10],i,j;for(i=0;i<4;i++)for(j=0;j<10;j++)arr[i][j]=0;如果在定義數(shù)組時完成數(shù)組的初始化操作,賦值格式有如下兩種:①將數(shù)組元素的初值依次放在一對花括弧中并用賦值號與數(shù)組連接。具體格式為:
類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]={初值列表};花括弧內(nèi)各個初值之間用逗號分隔,初值類型必須與數(shù)組類型一致。系統(tǒng)自動按數(shù)組元素在內(nèi)存的順序?qū)⒊踔狄来钨x給相應(yīng)的元素。若數(shù)值型數(shù)組的初值數(shù)量不足時,將0賦給其余數(shù)組元素。例如,語句“intx[2][3]={1,2,3,4,5};”之后,系統(tǒng)自動按數(shù)組x的元素在內(nèi)存的順序?qū)⒊踔狄来钨x給相應(yīng)的元素,即x[0][0]=1,x[0][1]=2,x[0][2]=3,x[1][0]=4,x[1][1]=5。其余元素被自動賦值為0:x[1][2]=0。②賦初值時,每一行的初值放在一個花括號中,所有行的初值再放在一個花括號中。具體格式為:類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]={{第0行初值列表},{第1行初值列表},…};系統(tǒng)將第一個花括號內(nèi)數(shù)據(jù)依次賦值給數(shù)組的第0行,將第二個花括號內(nèi)數(shù)據(jù)依次賦值給數(shù)組的第1行,依次類推。例如,語句“intx[4][4]={{1,2,3,4},{4,5,6},{},{7}};”之后,系統(tǒng)將1、2、3、4依次賦給x[0][0]、x[0][1]、x[0][2]和x[0][3];4、5、6依次賦給x[1][0]、x[1][1]和x[1][2],沒有列出初值的元素,系統(tǒng)自動賦0;對應(yīng)第2行的“{}”,系統(tǒng)給x[2][0]、x[2][1]、x[2][2]和x[2][3]均賦值0;第3行對應(yīng){7},則系統(tǒng)將7賦值給x[3][0],而x[3][1]、x[3][2]和x[3][3]均被系統(tǒng)賦值為0。注意:在賦初值時需指定第二維數(shù)組長度,可省略第一維的長度。編譯系統(tǒng)會根據(jù)賦初值的情況,自動得到第一維的長度。例如語句“intx[][3]={{1,2,3},{4}};”,編譯系統(tǒng)可分析出第一維的長度是2。5.2.4二維數(shù)組應(yīng)用舉例【例5.5】將一個二維數(shù)組行和列元素互換后,存到另一個二維數(shù)組中,如圖5.4所示。
12314a=b=2545636
#include“stdio.h“/*例5.5程序*/voidmain(){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]);/*打印a數(shù)組元素*/
b[j][i]=a[i][j];/*交換*/}printf("\n");}printf("arrayb:\n");for(i=0;i<=2;i++){for(j=0;j<=1;j++) printf("%5d",b[i][j]);printf("\n");}}5.3字符數(shù)組實際應(yīng)用中除要求程序處理數(shù)值型數(shù)據(jù)外,還要求處理文字型數(shù)據(jù)。文字型數(shù)據(jù)不是單個的字符,而是字符串。C系統(tǒng)沒有提供字符串變量,字符串通常用字符型數(shù)組來存放、處理。5.3.1字符數(shù)組的定義和引用字符數(shù)組是指數(shù)組元素為字符型的數(shù)組。字符數(shù)組的定義、引用、初始化方式和其它類型數(shù)組非常類似。但是由于字符數(shù)組是文字型數(shù)據(jù),因此其使用方式又有不同之處。一維字符數(shù)組的定義格式為:
char數(shù)組名[常量表達(dá)式];例如,語句“charstr1[8];”定義了一個可存放8個字符的一維數(shù)組str1。二維字符數(shù)組可以存放多個字符串。二維字符數(shù)組的定義格式為:
char數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];
例如,語句“charstr2[6][80];”定義了一個二維字符數(shù)組,可存放6個字符串的,每串長度不能超過80個字符(包括字符串結(jié)束符)。
字符數(shù)組元素也可通過數(shù)組名和下標(biāo)引用。例如,str1[6]、str2[2][7]、str1[i]、str2[j][k]都是合法的字符數(shù)組元素的引用(設(shè)i,j,k是整型變量)。
字符數(shù)組也可以在定義時初始化,方法和其它類型的數(shù)組一樣,例如,charstr1[3][8]={{'r','e','d'},{'y','e','l','l','o','w'},{'g','r','e','e','n'}};注意:若沒有對字符數(shù)組全部元素賦值,編譯系統(tǒng)會對剩余的元素自動賦值為空字符??兆址?\0'來表示,是ASCII碼值為0的字符,表示什么都不做,也不顯示。
在定義字符數(shù)組之后,只能逐個給數(shù)組元素賦值。charstr2[8];str2[0]='a';str2[1]='b';str2[2]='c';str2[3]='d';
對字符數(shù)組元素的操作只要符合字符類型的操作規(guī)則即可?!纠?.8】輸出一個數(shù)字金字塔圖形。#include"stdio.h"voidmain(){chardiamond[][11]={{'','','','','','1'}, {'','','','','2','2','2'}, {'','','','3','3','3','3','3'}, {'','','4','4','4','4','4','4','4'}, {'','5','5','5','5','5','5','5','5','5'}, {'6','6','6','6','6','6','6','6','6','6','6'} };inti,j;for(i=0;i<6;i++) {for(j=0;j<11;j++) printf("%c",diamond[i][j]); printf("\n"); }}【例5.9】將一行字符中所有字母替換為在字母表中其后的第三個字母,即a替換為d、z替換為c,然后輸出。#include"stdio.h"#include"string.h"voidmain(){charstr[80],i=0;printf("pleaseenterthecharacters:");while((str[i]=getchar())!=‘\n’)i++;/*輸入字符序列,直到 車時結(jié)束*/for(i=0;str[i]!='\n';i++){if(str[i]<='w'&&str[i]>='a')str[i]=str[i]+3;if(str[i]<='z'&&str[i]>='x')str[i]=str[i]-23;if(str[i]<='W'&&str[i]>='A')str[i]=str[i]+3;if(str[i]<='Z'&&str[i]>='X')str[i]=str[i]-23;}for(i=0;str[i]!='\n';i++)/*輸出字符序列*/printf("%c",str[i]);}5.3.2字符串和字符數(shù)組1.字符串的表示編程者用字符數(shù)組處理字符串時,關(guān)心就不是數(shù)組的長度,而是有效字符串的長度。C語言中不保存字符串的長度,因此需要在字符串末尾加字符串結(jié)束標(biāo)志
空字符'\0'以表示字符串結(jié)束。
對于字符串常量,編譯系統(tǒng)處理時會自動在字符串末尾處加上'\0'。因此,含有n個字符的字符串常量在內(nèi)存中占n+1個字節(jié)的空間,第n+1個字節(jié)存放'\0'。字符串常量和字符常量是不同,主要區(qū)別有兩點:①形式不同,字符串常量是用雙引號引起來的字符序列,字符序列可以為空,也可以是一個或多個字符;而字符常量是用單引號引起來的單個字符;
②存儲不同,字符串常量要占用(字符串長度+1)個字節(jié);而字符常量占用一個字節(jié)空間存放其本身。例如,'s'是字符常量,值為字母s,在內(nèi)存保存的是字母s的ASCII碼值,占一個字節(jié);而"s"表示含有一個字母s的字符串,在內(nèi)存保存的是字母s和空字符'\0'的ASCII碼值,占兩個字節(jié)。""表示空串,在內(nèi)存中保存的是空字符'\0'的ASCII碼值,占一個字節(jié)。"
"表示一個含有一個空格的字符串,在內(nèi)存中占兩個字節(jié);''表示空格字符,在內(nèi)存中占一個字節(jié)。
注意:對于字符串?dāng)?shù)組,系統(tǒng)不自動添加結(jié)束標(biāo)志'\0',如例5.10?!纠?.10】從鍵盤輸入一行字符,存放在字符數(shù)組中,然后輸出。#defineN80#include"stdio.h"main(){charstr[N];inti,j;printf("pleaseenterthecharacters:");for(i=0;(str[i]=getchar())!=‘\n’;i++);/*輸入字符序列,當(dāng)輸入 字符為回車時結(jié)束*/str[i]='\0';/*添加字符串結(jié)束標(biāo)志*/for(i=0;str[i]!='\0';i++)/*輸出字符序列*/printf("%c",str[i]);}2.字符串常量賦給字符數(shù)組若在定義字符數(shù)組的同時賦初值,則可將字符串常量賦給它。例如,charc[20]={"Thegreatwall"};習(xí)慣上可以省略花括號,上面定義寫為:
charc[20]="Thegreatwall";數(shù)組c在內(nèi)存中存儲的示意圖如圖。Thegreatwall\0\0\0\0\0\0012345678910111213141516171819說明:①若定義字符數(shù)組時完成賦初值,則可以在定義中省略數(shù)組的長度。系統(tǒng)會根據(jù)所賦字符串常量的實際長度來確定字符數(shù)組的長度。如上述定義也可寫為:charc[]="Thegreatwall";系統(tǒng)會自動確定數(shù)組c的長度為15。②字符串常量末尾處有系統(tǒng)自動加的結(jié)束標(biāo)志'\0',所以要求數(shù)組長度比字符串長度至少大1。例如,charc[14]="Thegreatwall";這條語句中數(shù)組c不能滿足字符串長度。③除了數(shù)組定義時可以將字符串直接付給字符數(shù)組外,其它時刻只能對元素進(jìn)行賦值。例如,不能用語句“c="string";”對字符數(shù)組c賦值?!纠?.11】寫出程序結(jié)果,并考慮原因。#include"stdio.h"main(){charstr1[]="Thisisastring";charstr2[]={'T','h','i','s','','i','s','','a','','s','t','r','i', 'n','g','\0'};charstr3[]={'T','h','i','s','','i','s','','a','','s','t','r','i', 'n','g'};inti;for(i=0;str1[i]!='\0'&&i<20;i++)printf("%c",str1[i]);printf("\nlength:%3d\n",i);for(i=0;str2[i]!='\0'&&i<20;i++)printf("%c",str2[i]);printf("\nlength:%3d\n",i);for(i=0;str3[i]!='\0'&&i<20;i++)printf("%c",str3[i]);printf("\nlength:%3d\n",i);}程序運行結(jié)果為:Thisisastringlength:16Thisisastringlength:16ThisisastringΦ
??length:20(注意這里Φ
??是四個未知字符造成的)charstr1[]="Thisisastring";和charstr2[]={'T','h','i','s','','i','s','','a','','s','t','r','i','n','g','\0'}是等效的,在內(nèi)存中存儲了字符串"Thisisastring"和一個'\0',數(shù)組長度都為17。但charstr3[]={'T','h','i','s','','i','s','','a','','s','t','r','i','n','g'},這條語句在內(nèi)存中存放了'T'、'h'、'i'、's'、''、'i'、's'、''、'a'、''、's'、't'、'r'、'i'、'n'、'g'16個字符,數(shù)組長度為16。因為輸出str3時沒有找到結(jié)束標(biāo)志,超出了數(shù)組范圍,所以輸出了四個未知字符。5.3.3常用字符串處理函數(shù)
為了簡化程序設(shè)計的復(fù)雜度,C語言提供了大量處理字符串的庫函數(shù)。這里僅介紹幾個常用的函數(shù)。
1.字符串輸入函數(shù)gets
格式:gets(字符數(shù)組)
功能:接收從鍵盤輸入的一個字符串(可包含空格),存放在字符數(shù)組中。函數(shù)的返回值是字符數(shù)組的起始地址。例如,在語句“char
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 書籍設(shè)備采購合同范本
- 課程建設(shè)研究課題申報書
- 企業(yè)廠區(qū)租賃合同范本
- 小學(xué)數(shù)學(xué)思維課題申報書
- 共建工廠合作合同范例
- 勞動合同范本 計時
- 農(nóng)機(jī)隊耕種合同范本
- 印譜制作合同范例
- 體育產(chǎn)業(yè)趨勢分析與未來市場展望
- 合同鋪租合同范例
- 2025年南昌理工學(xué)院單招職業(yè)技能測試題庫完整
- 2025年黑龍江省安全員A證考試題庫附答案
- DB32T-工業(yè)有機(jī)廢氣治理用活性炭技術(shù)要求
- 2024年輔警招聘考試試題庫含完整答案(各地真題)
- TCALC 003-2023 手術(shù)室患者人文關(guān)懷管理規(guī)范
- 2024春蘇教版《亮點給力大試卷》 數(shù)學(xué)四年級下冊(全冊有答案)
- 潤滑油存放區(qū)應(yīng)急預(yù)案
- 25題退役軍人事務(wù)員崗位常見面試問題含HR問題考察點及參考回答
- 輸尿管結(jié)石教學(xué)查房PPT課件(PPT 42頁)
- 浙江心理健康教育B證材料(教案設(shè)計)
- 人教版數(shù)學(xué)三年級下冊第一單元《位置與方向(一)》單元測試卷[附答案]
評論
0/150
提交評論