




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章數(shù)組2023/7/282023/7/281第4章數(shù)組C編程4.1一維數(shù)組4.2二維數(shù)組4.3字符數(shù)組2023/7/282第4章數(shù)組C編程
前面討論了C語言中的一些基本數(shù)據(jù)類型,如整型、實型、字符型等,在此基礎(chǔ)上,本章將討論C語言中構(gòu)造類型數(shù)據(jù)中的一種:數(shù)組。數(shù)組是程序設(shè)計中一種普遍使用的數(shù)據(jù)結(jié)構(gòu),是數(shù)目固定、類型相同的數(shù)據(jù)的有序集合。2023/7/283第4章數(shù)組C編程4.1一維數(shù)組4.1.1一維數(shù)組的定義一維數(shù)組的定義形式為:類型說明符數(shù)組名[常量表達式]
類型說明符可以是任何一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。數(shù)組的類型實際上是指數(shù)組元素的取值類型。對于同一個數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的。數(shù)組名是用戶定義的數(shù)組標識符,數(shù)組名的書寫規(guī)則應(yīng)符合標識符的書寫規(guī)定。常量表達式表示數(shù)組的固定長度,即數(shù)組中所包含元素的個數(shù)。2023/7/284第4章數(shù)組C編程例如:inta[5];定義數(shù)組a,有5個元素,每個元素為整型。floatb[10];定義實型數(shù)組b,有10個元素。charc[20];定義字符數(shù)組c,有20個元素。注意:數(shù)組在內(nèi)存中占有連續(xù)的存儲空間,并且一維數(shù)組是按下標遞增的順序連續(xù)存放的,所以數(shù)組a[5]在內(nèi)存中的存儲形式如下所示:a[0]a[1]a[2]a[3]a[4]2023/7/285第4章數(shù)組C編程對于數(shù)組的定義應(yīng)注意以下幾點:(1)數(shù)組名不能與其它變量名相同。例如:intmain(){inta;floata[10];……}是錯誤的。2023/7/286第4章數(shù)組C編程(2)不能在方括號中用變量來表示數(shù)組的長度,只能用符號常量或常量表達式;其中常量表達式必須是正的整型常量表達式。例如:#defineL5intmain(){inta[3+2],b[7+L];……}是合法的。但是下述說明方式是錯誤的。intmain(){intn=5;inta[n];……}2023/7/287第4章數(shù)組C編程(3)數(shù)組名后的常量表達式用方括號括起來,不能用圓括號或其它類型的括號。例如:inta(10);是錯誤的。(4)相同類型的數(shù)組、變量可以在一個類型說明符下一起說明,相互之間用逗號隔開。例如:inta,b,c,k1[10],k2[20];表示同時定義了整型變量a、b、c和整型數(shù)組k1、k2。2023/7/288第4章數(shù)組C編程4.1.2一維數(shù)組元素的引用
數(shù)組元素通常也稱為下標變量。必須先定義數(shù)組,才能使用下標變量。同時,C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。2023/7/289第4章數(shù)組C編程數(shù)組元素的引用方式為:數(shù)組名[下標]其中下標可以為整型常量或整型表達式。例如:a[2]a[i+j]a[j++]都是合法的數(shù)組元素引用。2023/7/2810第4章數(shù)組C編程可以使用循環(huán)語句逐個輸出數(shù)組的各個元素(即下標變量):inta[10];for(i=0;i<10;i++)printf("%d",a[i]);而不能用一個語句輸出整個數(shù)組。下面的寫法是錯誤的:printf("%d",a);2023/7/2811第4章數(shù)組C編程注意:①C語言中數(shù)組的下標是從0開始的,定義時如果數(shù)組的長度為n,則下標取值范圍是0,1,……,n-1。例如,intarray[5];表示數(shù)組array有5個元素,分別為array[0],array[1],array[2],array[3],array[4]。②定義數(shù)組時數(shù)組長度只能用常量表達式,但是引用數(shù)組元素時下標可以是整型常量、整型變量或整型表達式。2023/7/2812第4章數(shù)組C編程【例4.1】按逆序輸出數(shù)組元素的值。#include<stdio.h>intmain(){inti,aray[5];for(i=0;i<=4;i++)array[i]=i;for(i=4;i>=0;i--)printf("%d",array[i]);return0;}2023/7/2813第4章數(shù)組C編程【例4.2】將例4.1中數(shù)組元素的引用變換一種形式。#include<stdio.h>intmain(){inti,array[5];for(i=0;i<5;)array[i++]=i;for(i=4;i>=0;i--)printf("%d",array[i]);return0;}2023/7/2814第4章數(shù)組C編程4.1.3一維數(shù)組的初始化在定義數(shù)組時給數(shù)組元素賦初值,稱之為數(shù)組的初始化。數(shù)組初始化的一般形式為:類型說明符數(shù)組名[常量表達式]={值1,值2,……,值n};其中在{}中的各數(shù)據(jù)值即為各元素的初值,各值之間用逗號間隔。2023/7/2815第4章數(shù)組C編程對數(shù)組的初始化可以有以下幾種方法:(1)對所有元素賦初值。例如:
inta[6]={0,1,2,3,4,5};
將數(shù)組元素的初值依次放在一對花括號中。經(jīng)過上面的定義和初始化后,使得a[0]的值為0、a[1]的值為1、a[2]的值為2、a[3]的值為3、a[4]的值為4、a[5]的值為5。2023/7/2816第4章數(shù)組C編程(2)可以只給一部分元素賦值。例如:
inta[10]={0,1,2,3};
定義a數(shù)組有10個元素,但花括號內(nèi)只提供4個初值,這表示只給數(shù)組的前4個元素a[0]~a[3]賦初值,而后6個元素自動賦值為0。(3)如果想使一個數(shù)組中全部元素值相同,例如數(shù)組元素值都為1,只能寫為:
inta[5]={1,1,1,1,1};
而不能寫為:inta[5]={1};2023/7/2817第4章數(shù)組C編程(4)在對全部數(shù)組元素賦初值時,由于數(shù)據(jù)的個數(shù)已經(jīng)確定,可以不指定數(shù)組長度。例如:
inta[5]={1,2,3,4,5};
可寫為:
inta[]={1,2,3,4,5};
在第二種寫法中,花括弧中有5個數(shù),系統(tǒng)就會據(jù)此自動定義數(shù)組a的長度為5,但是當(dāng)被定義的數(shù)組長度與提供初值的個數(shù)不相同時,不能省略數(shù)組長度。2023/7/2818第4章數(shù)組C編程4.1.4一維數(shù)組程序舉例【例4.3】任意輸入10個元素,求這10個元素的和及最大值。#include<stdio.h>intmain(){inti,max,a[10],sum;printf("Pleaseinput10numbers:\n");for(i=0;i<=9;i++)scanf("%d",&a[i]);max=a[0];sum=a[0];for(i=1;i<10;i++){if(a[i]>max)max=a[i];sum=sum+a[i];}printf("max=%d\nsum=%d",max,sum);return0;}2023/7/2819第4章數(shù)組C編程【例4.4】用數(shù)組來處理求fibonacci數(shù)列問題。#include<stdio.h>intmain(){inti;intf[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%12d",f[i]);}return0;}2023/7/2820第4章數(shù)組C編程【例4.5】用冒泡排序的方法將數(shù)組元素升序排列。假定對下列數(shù)據(jù)進行升序排序:6,7,8,15,20,5,2,則冒泡排序過程如下所示。原始序列678152052第1趟678155220第2趟678521520第3趟675281520第4趟652781520第5趟526781520第6趟256781520n個元素只需進行n-1趟冒泡排序。
2023/7/2821第4章數(shù)組C編程#include<stdio.h>#defineSIZE7voidBubbleSorter(intarray[],intn){inti,j;inttemp;for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) {if(array[j]>array[j+1]) {temp=array[j];array[j]=array[j+1]; array[j+1]=temp; } }}intmain(){inti,array[SIZE];printf("輸入待排序的整數(shù):");for(i=0;i<SIZE;i++)scanf("%d",&array[i]);BubbleSorter(array,SIZE);printf("排序后的序列為:\n");for(i=0;i<SIZE;i++)printf("%4d",array[i]);return0;}2023/7/2822第4章數(shù)組C編程【例4.6】用選擇排序的方法對下列數(shù)據(jù)進行升序排序:6,7,8,15,20,5,2。選擇排序的思想是:①首先從下標為0到n-1的元素中找到值最小的元素,然后將該最小元素與第一個元素(即下標為0的元素)交換。②然后在剩余的元素(即下標從1到n-1的元素)中,找到值最小的元素,將該最小元素與第二個元素(即下標為1的元素)交換。③如此重復(fù),直至所有元素已排好序。同冒泡排序一樣,n個元素只需進行n-1趟選擇排序。2023/7/2823第4章數(shù)組C編程原始序列678152052第1趟2
78152056第2趟258152076第3趟256152078第4趟256720158第5趟256781520第6趟2567815202023/7/2824第4章數(shù)組C編程#include<stdio.h>#defineSIZE7voidSelectSorter(intarray[],intn);intmain(){inti,array[SIZE];printf("輸入待排序的整數(shù):");for(i=0;i<SIZE;i++) scanf("%d",&array[i]);SelectSorter(array,SIZE);printf("排序后的序列為:\n");for(i=0;i<SIZE;i++) printf("%4d",array[i]);return0;}voidSelectSorter(intarray[],intn){inti,j;intmin_index;inttemp;for(i=0;i<n;i++){min_index=i;for(j=i+1;j<n;j++) {if(array[j]<array[min_index]) min_index=j;}temp=array[i]; array[i]=array[min_index];array[min_index]=temp;}}2023/7/2825第4章數(shù)組C編程4.2二維數(shù)組
一維數(shù)組是線性的數(shù)組,它僅有一個下標。具有兩個下標的數(shù)組稱為二維數(shù)組。C語言允許定義和引用任意維數(shù)的數(shù)組,其使用方法與二維數(shù)組類似,但超過二維以上的數(shù)組在實際的程序設(shè)計中較少使用。2023/7/2826第4章數(shù)組C編程4.2.1二維數(shù)組的定義二維數(shù)組定義的一般形式為:類型說明符數(shù)組名[常量表達式1][常量表達式2]其中常量表達式1表示第一維下標的長度,常量表達式2表示第二維下標的長度。例如:inta[3][4];定義了一個3行4列的數(shù)組,數(shù)組名為a,其數(shù)組元素(即下標變量)的類型為整型。這3×4=12個數(shù)組元素分別為:a[0][0],a[0][1],a[0][2],a[0][3]a[1][0],a[1][1],a[1][2],a[1][3]a[2][0],a[2][1],a[2][2],a[2][3]2023/7/2827第4章數(shù)組C編程
二維數(shù)組在邏輯上是二維的,但是,計算機中實際的物理存儲器卻是連續(xù)編址的,也就是說,內(nèi)存單元是按一維線性排列的。如何在一維的存儲空間中存放二維數(shù)組的元素?通常有兩種解決方式:一種是按行序有序排列,即保存完一行之后順序放入第二行;另一種是按列序有序排列,即保存完一列之后再順序放入第二列。在C語言中,沒有特殊說明情況下,二維數(shù)組是按行序有序排列的。對于二維數(shù)組a[3][4]是先依次存放第0行元素,再依次存放第1行元素,最后依次存放第2行元素。2023/7/2828第4章數(shù)組C編程4.2.2二維數(shù)組元素的引用二維數(shù)組元素的表示形式為:數(shù)組名[下標][下標]同樣,下標也應(yīng)為整型常量或整型表達式。例如:a[2][3]表示數(shù)組a的第2行第3列的元素。注意,不要寫成:a[2,3]2023/7/2829第4章數(shù)組C編程數(shù)組元素可以出現(xiàn)在表達式中,也可以被賦值,例如:
b[1][2]=a[2][3]/2在使用數(shù)組元素時,應(yīng)注意下標值應(yīng)在已定義的數(shù)組大小的范圍內(nèi),常出現(xiàn)的錯誤是:
inta[3][2];a[3][2]=2;對于數(shù)組a,它可用的行下標最大值為2,列下標最大值為1。2023/7/2830第4章數(shù)組C編程【例4.7】一個小組有5個人,每個人有三門課的考試成績。求全組各科的平均成績和總平均成績。分析:可設(shè)一個二維數(shù)組a[5][3]存放五個人三門課的成績。再設(shè)一個一維數(shù)組ave[3]存放所求得各科平均成績,設(shè)變量average為全組總平均成績。intmain(){inti,j,s,average,ave[3],a[5][3];printf("Pleaseinputscore:\n");for(i=0;i<3;i++){s=0;for(j=0;j<5;j++){scanf("%d",&a[j][i]);s=s+a[j][i];}ave[i]=s/5;}average=(ave[0]+ave[1]+ave[2])/3;printf("math:%d\nclanguage:%d\nFoxpro:%d\n",ave[0],ave[1],ave[2]);printf("totalaverage:%d\n",average);return0;}2023/7/2831第4章數(shù)組C編程4.2.3二維數(shù)組的初始化二維數(shù)組初始化可按行分段賦值,也可按行連續(xù)賦值。例如:(1)按行分段賦值可寫為:inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};(2)按行連續(xù)賦值可寫為:inta[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};這兩種賦初值的結(jié)果是完全相同的。2023/7/2832第4章數(shù)組C編程對于二維數(shù)組初始化還有以下說明:(1)可以只對部分元素賦初值,未賦初值的元素自動取0值。例如:inta[3][3]={{1},{2},{3}};表示對每一行的第一列元素賦值,未賦值的元素自動取值為0。賦值后各元素的值為:100200300又如:inta[3][3]={{0,1},{0,0,2},{3}};賦值后各元素的值為:0100023002023/7/2833第4章數(shù)組C編程(2)如對全部元素賦初值,則可以省略第一維的長度。例如:inta[3][3]={1,2,3,4,5,6,7,8,9};可以寫為:inta[][3]={1,2,3,4,5,6,7,8,9};(3)二維數(shù)組可以看作是由一維數(shù)組的嵌套而構(gòu)成的。設(shè)一維數(shù)組的每個元素又都是一個數(shù)組,就組成了二維數(shù)組。當(dāng)然,前提是各元素類型必須相同。根據(jù)這樣的分析,一個二維數(shù)組也可以分解為多個一維數(shù)組。例如二維數(shù)組a[3][4],可分解為三個一維數(shù)組,其數(shù)組名分別為:a[0]a[1]a[2]
對這三個一維數(shù)組不需另作說明即可使用。這三個一維數(shù)組都有4個元素,例如:一維數(shù)組a[0]的元素為a[0][0]、a[0][1]、a[0][2]、a[0][3]。注意:a[0]、a[1]、a[2]不能當(dāng)作下標變量使用,它們是數(shù)組名,不是一個單純的下標變量。
2023/7/2834第4章數(shù)組C編程4.2.4二維數(shù)組程序舉例【例4.9】將一個二維數(shù)組的行和列元素互換,存到另一個二維數(shù)組中。intmain(){inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};intb[4][3],m,n;printf("轉(zhuǎn)置前的數(shù)組為:\n");for(m=0;m<3;m++){for(n=0;n<4;n++){printf("%5d",a[m][n]);/*輸出數(shù)組內(nèi)容*/b[n][m]=a[m][n];/*行列互換*/}printf("\n");}2023/7/2835第4章數(shù)組C編程printf("裝置后的數(shù)組為:\n");for(m=0;m<4;m++){for(n=0;n<3;n++)printf("%5d",b[m][n]);printf("\n");}return0;}2023/7/2836第4章數(shù)組C編程【例4.10】有一個3×4的矩陣,試求該矩陣中具有最大值的元素,輸出其值并指出該元素所在的行號和列號。intmain(){inta[3][4],i,j,row,col,max;row=col=0;printf(“數(shù)組賦值為:\n”);for(i=0;i<3;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j]);
2023/7/2837第4章數(shù)組C編程max=a[0][0];/*將a[0][0]設(shè)定為最大數(shù)*/for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>max){max=a[i][j];row=i;col=j;}/*尋找最大數(shù)*/printf(“max=%d,row=%d,col=%d\n”,max,row,col);return0;}
2023/7/2838第4章數(shù)組C編程4.3字符數(shù)組
在C語言中沒有字符串類型的變量,處理字符串類型的數(shù)據(jù),必須使用字符數(shù)組。字符數(shù)組是用來存放字符型數(shù)據(jù)的數(shù)組。在字符數(shù)組中,每一個數(shù)組元素只能存放一個字符。2023/7/2839第4章數(shù)組C編程4.3.1字符數(shù)組的定義字符數(shù)組的定義與前面介紹的數(shù)值數(shù)組的定義類似。例如:
charc[10];表示定義一個有10個元素的字符數(shù)組c。由于字符型和整型通用,也可以定義為intc[10]。字符數(shù)組也可以是二維或多維數(shù)組。例如:
charc[5][10];即為二維字符數(shù)組。2023/7/2840第4章數(shù)組C編程4.3.2字符數(shù)組的初始化字符數(shù)組也允許在定義時初始化。例如:charc[10]={'c','','p','r','o','g','r','a','m'};當(dāng)對全體元素賦初值時也可以省去長度說明。例如:charc[]={'c','','p','r','o','g','r','a','m'};這時c數(shù)組的長度自動定為9。2023/7/2841第4章數(shù)組C編程4.3.3字符數(shù)組的引用在C語言中,字符數(shù)組與數(shù)值型數(shù)組一樣,也只能對字符數(shù)組元素逐個引用。在程序中,對字符數(shù)組元素的引用常常會出現(xiàn)在賦值語句中。例如:charch[3];ch[0]='A';/*賦值A(chǔ)字母時,要用單引號括起來*/ch[1]=ch[0]+1;/*等價于賦值字母B*/ch[2]=ch[1]-1;/*等價于賦值字母A*/又如:charch[26];ch[0]='A';for(i=1;i<=25;i++)
ch[i]=ch[i-1]+1;for(i=0;i<=25;i++)printf(“ch[%d]=%c”,i,ch[i]);以上程序段表示將’A’到’Z’共26個字符存放至數(shù)組ch中,然后依次輸出它們。
2023/7/2842第4章數(shù)組C編程4.3.4字符串和字符串結(jié)束標志
在C語言中沒有專門的字符串變量,通常用一個字符數(shù)組來存放一個字符串。前面介紹字符串常量時,已說明字符串總是以’\0’作為串的結(jié)束符。因此當(dāng)把一個字符串存入一個數(shù)組時,也把結(jié)束符’\0’存入數(shù)組,并以此作為該字符串是否結(jié)束的標志。有了’\0’標志后,就不必再用字符數(shù)組的長度來判斷字符串的長度了。2023/7/2843第4章數(shù)組C編程C語言允許用字符串的方式對數(shù)組作初始化賦值。例如:charc[]={'c','','p','r','o','g','r','a','m'};可寫為:charc[]={"Cprogram"};或去掉{}寫為:charc[]="Cprogram";
用字符串方式賦值比用字符逐個賦值要多占一個字節(jié),用于存放字符串結(jié)束標志‘\0’。上面的數(shù)組c在內(nèi)存中的實際存放情況為:Cprogram\0‘\0’是由C編譯系統(tǒng)自動加上的。由于采用了‘\0‘標志,所以在用字符串賦初值時一般無須指定數(shù)組的長度,而由系統(tǒng)自行處理。2023/7/2844第4章數(shù)組C編程4.3.5字符數(shù)組的輸入輸出1.利用格式符%c對字符數(shù)組元素逐個輸入、輸出。例如:for(i=0;i<20;i++){scanf(“%c”,&a[i]);printf(“%3c”,a[i]);}2023/7/2845第4章數(shù)組C編程2.利用格式符%s對字符串整體輸入、輸出?!纠?.11】整體輸入、輸出字符串。#include<stdio.h>intmain(){charst[15];printf("inputstring:\n");scanf("%s",st);printf("%s\n",st);return0;}
本例中定義數(shù)組長度為15,但是輸入的字符串長度必須小于15,這樣才能留出一個字節(jié)用于存放字符串結(jié)束標志’\0’。運行結(jié)果如下:inputstring:hello!↙hello!2023/7/2846第4章數(shù)組C編程
應(yīng)該說明的是,對一個字符數(shù)組,如果不作初始化賦值,則必須說明數(shù)組長度。還應(yīng)該特別注意的是,當(dāng)用scanf函數(shù)輸入字符串時,字符串中不能含有空格,否則將以空格作為串的結(jié)束符。例如,當(dāng)輸入的字符串中含有空格時,例4.11運行情況為:inputstring:thisisabook↙this從輸出結(jié)果可以看出空格以后的字符都未能輸出。2023/7/2847第4章數(shù)組C編程注意:(1)由于字符數(shù)組名表示的是該數(shù)組的首地址,因此使用格式符%s可以實現(xiàn)字符串整體的輸入和輸出。此處,函數(shù)參數(shù)要求的是地址,故直接用字符數(shù)組名進行操作,而不是字符數(shù)組元素。下面的寫法都是錯誤的:scanf(“%s”,&a[0]);scanf(“%s”,&a);printf(“%s\n”,a[0]);2023/7/2848第4章數(shù)組C編程(2)用格式符%s輸入字符串時,空格、Tab鍵和回車鍵作為數(shù)據(jù)的分隔符,不會作為字符串內(nèi)容被讀入。例如:chara1[3],a2[5],a3[5];scanf(“%s%s%s”,a1,a2,a3);執(zhí)行上語句時,輸入doyourbest↙則字符數(shù)組a1存放的是字符串”do”,字符數(shù)組a2存放的是字符串”your”,字符數(shù)組a3存放的是字符串”best”。2023/7/2849第4章數(shù)組C編程(3)若一個字符數(shù)組中含有一個或多個串結(jié)束符’\0’,串操作時,遇第一個’\0’字符時表示串結(jié)束。例如:charch[20]={‘H’,’e’,’l’,’l’,’o’,’\0’,’w’,’o’,’r’,’l’,’d’};printf(“%s”,ch);輸出結(jié)果為:Hello(4)如果字符數(shù)組中沒有串結(jié)束符’\0’,串操作時,則會產(chǎn)生意想不到的結(jié)果,系統(tǒng)不會自動報錯。程序設(shè)計時應(yīng)注意避免這種情況的發(fā)生。2023/7/2850第4章數(shù)組C編程4.3.6字符串處理函數(shù)用于輸入輸出的字符串函數(shù),在使用前應(yīng)包含頭文件<stdio.h>,使用其它字符串函數(shù)則應(yīng)包含頭文件<string.h>。1.字符串輸出函數(shù)puts格式:puts(字符數(shù)組名)功能:把字符數(shù)組中的字符串輸出到顯示器,即在屏幕上顯示該字符串。2023/7/2851第4章數(shù)組C編程【例4.12】puts函數(shù)應(yīng)用。#include<stdio.h>intmain(){charc[]="BASIC\ndBASE";puts(c);return0;}運行結(jié)果如下:BASICdBASE說明:字符串輸出函數(shù)作用是將存放在字符數(shù)組中的字符串或字符串常量輸出到終端,當(dāng)遇到第一個字符串結(jié)束符’\0’時結(jié)束。puts()函數(shù)一次只能輸出一個字符串,字符串中可以有轉(zhuǎn)義字符,函數(shù)puts()輸出字符串后自動換行。2023/7/2852第4章數(shù)組C編程2.字符串輸入函數(shù)gets格式:gets(字符數(shù)組名)功能:從標準輸入設(shè)備鍵盤上輸入一個字符串。本函數(shù)會得到一個函數(shù)值,即為該字符數(shù)組的首地址。
2023/7/2853第4章數(shù)組C編程【例4.13】gets函數(shù)應(yīng)用舉例。#include<stdio.h>intmain(){charst[15];printf("inputstring:\n");gets(st);puts(st);return0;}運行結(jié)果如下:inputstring:Helloworld↙Helloworld說明:當(dāng)輸入的字符串中含有空格時,輸出仍為全部字符串,這是因為gets函數(shù)并不以空格作為字符串輸入結(jié)束的標志,而是以回車作為輸入結(jié)束。這點與scanf函數(shù)不同。2023/7/2854第4章數(shù)組C編程3.字符串連接函數(shù)strcat格式:strcat(字符數(shù)組名1,字符數(shù)組名2)功能:把字符數(shù)組2中的字符串連接到字符數(shù)組1中字符串的后面,并刪去字符串1后的串結(jié)束標志“\0”。本函數(shù)返回值是字符數(shù)組1的首地址。2023/7/2855第4章數(shù)組C編程【例4.14】使用strcat函數(shù)進行字符串連接。#include<string.h>#include<stdio.h>intmain(){staticcharst1[30]="Mynameis";charst2[10];printf("inputyourname:\n");gets(st2);strcat(st1,st2);puts(st1);return0;}運行結(jié)果如下:inputyourname:LiWei↙MynameisLiWei說明:本程序把初始化賦值的字符數(shù)組與動態(tài)賦值的字符串連接起來。要注意的是,字符數(shù)組1應(yīng)定義足夠的長度,以便全部裝入被連接的字符串。2023/7/2856第4章數(shù)組C編程4.字符串拷貝函數(shù)strcpy格式:strcpy(字符數(shù)組名1,字符數(shù)組名2)功能:把字符數(shù)組2中的字符串拷貝到字符數(shù)組1中,串結(jié)束標志符’\0’也一同拷貝。字符數(shù)組2也可以是一個字符串常量,這時相當(dāng)于把一個字符串賦予一個字符數(shù)組。2023/7/2857第4章數(shù)組C編程【例4.15】使用strcpy函數(shù)進行字符串拷貝。#include<string.h>#include<stdio.h>intmain(){charst1[15],st2[]="CLanguage";strcpy(st1,st2);puts(st1);printf("\n");return0;}運行結(jié)果如下:CLanguage說明:strcpy函數(shù)要求字符數(shù)組1應(yīng)有足夠的長度,否則不能全部裝入所拷貝的字符串。即字符數(shù)組1的長度要不小于字符數(shù)組2的長度。2023/7/2858第4章數(shù)組C編程5.字符串比較函數(shù)strcmp格式:strcmp(字符數(shù)組名1,字符數(shù)組名2)功能:按照ASCII碼順序比較兩個數(shù)組中的字符串,并由函數(shù)返回值返回比較結(jié)果。字符串1=字符串2,返回值為0;字符串2>字符串2,返回值>0;字符串1<字符串2,返回值<0。本函數(shù)也可用于比較兩個字符串常量,或者用于比較數(shù)組和字符串常量。2023/7/2859第4章數(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑協(xié)議書匯編15篇
- 1+X幼兒照護(初級)知到智慧樹答案
- 《紅樓夢》“三書”淺說知到智慧樹答案
- 《創(chuàng)新創(chuàng)業(yè)過程與方法》知到智慧樹答案
- 零售行業(yè)變革與挑戰(zhàn)
- (高級)審計理論與實務(wù)知到智慧樹答案
- 機電設(shè)備抗震加固與設(shè)計方案
- 供水管網(wǎng)工程施工人員培訓(xùn)方案
- 燃氣項目施工臨時設(shè)施方案
- 水稻小麥課件
- 廚房消防安全培訓(xùn)
- 小陳 稅務(wù)風(fēng)險應(yīng)對常見指標與答復(fù)思路
- 2025年《中華人民共和國檔案法》知識培訓(xùn)試題及答案
- 2026年高考政治一輪復(fù)習(xí):必修2《經(jīng)濟與社會》知識點背誦提綱
- 2025年急診急救試題(附答案)
- 2025年北京市中考語文試卷(含答案與解析)
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設(shè)計規(guī)范
- 急診與災(zāi)難醫(yī)學(xué):昏迷課件
- 實驗報告-探究杠桿的平衡條件
- 第3章access2010查詢操作-上傳
- 鉗工手工制作六角螺母詳細
評論
0/150
提交評論