




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
會計學(xué)1C語言課件數(shù)組
本章要點掌握一維、二維數(shù)組的定義和引用方法、存儲結(jié)構(gòu)和初始化方法。掌握有關(guān)一維數(shù)組的有關(guān)算法。掌握數(shù)組的運算。第七章數(shù)組第1頁/共73頁
主要內(nèi)容7.1一維數(shù)組的定義和引用7.2二維數(shù)組的定義和引用7.3字符數(shù)組第七章數(shù)組第2頁/共73頁
§7-1
一維數(shù)組的定義和引用
問題:有如下幾組數(shù)據(jù),它們分別該如何存儲呢?
是一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合。
數(shù)組一個班學(xué)生的學(xué)習(xí)成績一行文字一個矩陣這些數(shù)據(jù)的特點是:1、具有相同的數(shù)據(jù)類型2、使用過程中需要保留原始數(shù)據(jù)
C語言為這些數(shù)據(jù),提供了一種構(gòu)造數(shù)據(jù)類型:數(shù)組。第3頁/共73頁
1、一維數(shù)組的定義格式為:類型說明符數(shù)組名[常量表達(dá)式];例如:inta[10];
它表示定義了一個整形數(shù)組,數(shù)組名為a,此數(shù)組有10個元素?!?.1.1一維數(shù)組的定義
2、說明:(1)數(shù)組名定名規(guī)則和變量名相同,遵循標(biāo)識符定名規(guī)則。第4頁/共73頁(2)在定義數(shù)組時,需要指定數(shù)組中元素的個數(shù),方括弧中的常量表達(dá)式用來表示元素的個數(shù),即數(shù)組長度。例如,指定a[10],表示a數(shù)組有10個元素,注意下標(biāo)是從0開始的,這10個元素是,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。請持別注意,按上面的定義,不存在數(shù)組元素a[10]。(3)常量表達(dá)式中可以包括常量和符號常量,但不能包含變量。也就是說,C語言不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運行過程中變量的值。例如,下面這樣定義數(shù)組是不行的:第5頁/共73頁舉例:
intn;scanf(“%d″,&n);/*在程序中臨時輸入數(shù)組的大小*/inta[n];
①floata[0]; /*數(shù)組大小為0沒有意義*/
②intb(2)(3);/*不能使用圓括號*/
③intk,a[k];/*不能用變量說明數(shù)組大小*/
數(shù)組說明中其他常見的錯誤第6頁/共73頁3、一維數(shù)組在內(nèi)存中的存放每個數(shù)據(jù)元素占用的字節(jié)數(shù),就是基類型的字節(jié)數(shù)一個元素占4個字節(jié)一維數(shù)組:float
mark[100];mark[0]mark[1]mark[2]mark[3]...mark[99]86.592.077.552.0...94.0低地址
高地址第7頁/共73頁數(shù)組名[下標(biāo)]下標(biāo)可以是整型常量或整型表達(dá)式。例如:a[0]=a[5]+a[7]-a[2*3]定義數(shù)組時用到的“數(shù)組名[常量表達(dá)式]”和引用數(shù)組元素時用到的“數(shù)組名[下標(biāo)]”是有區(qū)別的。例如∶inta[10];/*定義數(shù)組長度為10*/t=a[6];/*引用a數(shù)組中序號為6的元素。此時6不代表數(shù)組長度*/注意§7.1.2一維數(shù)組元素的引用1、數(shù)組元素的引用方式:第8頁/共73頁2、一維數(shù)組元素引用的程序?qū)嵗?include<stdio.h>voidmain()
{inti,a[10];for(i=0;i<=9;i++)a[i]=i;for(i=9;i>=0;i--)printf("%d″,a[i]);printf("\n″);}
運行結(jié)果如下:9876543210
程序使a[0]到a[9]的值為0~9,然后按逆序輸出。第9頁/共73頁
1、對數(shù)組元素初始化的實現(xiàn)方法:
(1)在定義數(shù)組時對數(shù)組元素賦以初值。例如:inta[10]={0,1,2,3,4,5,6,7,8,9};將數(shù)組元素的初值依次放在一對花括弧內(nèi)。經(jīng)過上面的定義和初始化之后,a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9。
§7.1.3一維數(shù)組的初始化第10頁/共73頁
(3)如果想使一個數(shù)組中全部元素值為0,可以寫成
inta[10]={0,0,0,0,0,0,0,0,
0,0};或inta[10]={0};
不能寫成:inta[10]={0*10};這是與FORTRAN語言不同的,不能給數(shù)組整體賦初值。
2)可以只給一部分元素賦值。例如:inta[10]={0,1,2,3,4};
定義a數(shù)組有10個元素,但花括弧內(nèi)只提供5個初值,這表示只給前面5個元素賦初值,后5個元素值為0。第11頁/共73頁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ù)此自動定義a數(shù)組的長度為5。但若數(shù)組長度與提供初值的個數(shù)不相同,則數(shù)組長度不能省略。例如,想定義數(shù)組長度為10,就不能省略數(shù)組長度的定義,而必須寫成inta[10]={1,2,3,4,5};只初始化前5個元素,后5個元素為0。第12頁/共73頁程序舉例1:用數(shù)組來處理,求解Fibonacci數(shù)列。程序?qū)嵗?include<stdio.h>voidmain(){inti;intf[20]={1,1};Fibonacci數(shù)列公式:已知:
a1=a2=1 an=an-1+an-2
即:1,1,2,3,5,8,13§7.1.4一維數(shù)組程序舉例第13頁/共73頁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])}/*For循環(huán)結(jié)束*/}/*程序結(jié)束*/運行結(jié)果如下:
11235813213455891442333776109871597258441816765if語句用來控制換行,每行輸出5個數(shù)據(jù)。第14頁/共73頁程序舉例2:用起泡法對10個數(shù)排序(由小到大)。
起泡法的思路是:將相鄰兩個數(shù)比較,將小的調(diào)到前頭。
第一趟比較
經(jīng)過第一趟(共5次比較與交換)后,最大的數(shù)9已“沉底”。然后進行對余下的前面5個數(shù)第二趟比較,注第15頁/共73頁第二趟比較如果有n個數(shù),則要進行n-1趟比較。在第1趟比較中要進行n-1次兩兩比較,在第j趟比較中要進行n-j次兩兩比較。
經(jīng)過第二趟(共4次比較與交換)后,得到次大的數(shù)8。注第16頁/共73頁程序流程圖如下:第17頁/共73頁程序?qū)嵗?.3:#include<stdio.h>voidmain(){inta[10];inti,j,t;printf(″input10numbers:\n″);
for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");
第18頁/共73頁for(j=0;j<9;j++)for(i=0;i<9-j;i++)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]);printf(″\n″);}/*程序結(jié)束*/程序運行結(jié)果如下:input10numbers:10481265-76100-45123↙thesortednumbers:-76-4501481265100123第19頁/共73頁
§7-2
二維數(shù)組的定義和引用
§7.2.1二維數(shù)組的定義二維數(shù)組定義的一般形式為類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式];例如:定義a為3×4(3行4列)的數(shù)組,b為5×10(5行10列)的數(shù)組。如下:floata[3][4],b[5][10];不能寫成
floata[3,4],b[5,10];第20頁/共73頁注意我們可以把二維數(shù)組看作是一種特殊的一維數(shù)組:它的元素又是一個一維數(shù)組。例如,可以把a看作是一個一維數(shù)組,它有3個元素:a[0]、a[1]、a[2],每個元素又是一個包含4個元素的一維數(shù)組。第21頁/共73頁§7.2.1二維數(shù)組的定義
二維數(shù)組中的元素在內(nèi)存中的排列順序是:按行存放,即先順序存放第一行的元素,再存放第二行的元素…
一維數(shù)組在內(nèi)存中的存放下圖表示對a[3][4]數(shù)組存放的順序第22頁/共73頁地址
值
數(shù)組元素b[0][0]b[0][1]b[0][2]b[1][0]b[1][1]b[1][2]b[2][0]b[2][1]b[2][2]3000H3002H3004H3006H3008H300AH300CH300EH3010H例如:整型數(shù)組b[3][3]={{1,2,3},{4,5,6},{7,8,9}};123456789第23頁/共73頁問題:有了二維數(shù)組的基礎(chǔ),那么多維數(shù)組如何定義呢?
定義三維數(shù)組:
floata[2][3][4];多維數(shù)組元素在內(nèi)存中的排列順序:第一維的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快?!?.2.1二維數(shù)組的定義
a[0][0][0]→a[0][0][1]→a[0][0][2]→a[0][0][3]→a[0][1][0]→a[0][1][1]→a[0][1][2]→a[0][1][3]→
a[0][2][0]→a[0][2][1]→a[0][2][2]→a[0][2][3]→a[1][0][0]→a[1][0][1]→a[1][0][2]→a[1][0][3]→a[1][1][0]→a[1][1][1]→a[1][1][2]→a[1][1][3]→a[1][2][0]→a[1][2][1]→a[1][2][2]→a[1][2][3]→三維數(shù)組的元素排列順序第24頁/共73頁二維數(shù)組元素的表示形式為:數(shù)組名[下標(biāo)][下標(biāo)]
例如:a[2][3]下標(biāo)可以是整型表達(dá)式,如a[2-1][2*2-1]數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值,例如:b[1][2]=a[2][3]/2注意不要寫成a[2,3],a[2-1,2*2-1]形式§7.2.2二維數(shù)組的引用第25頁/共73頁常出現(xiàn)的錯誤有:
inta[3][4];
/*定義a為3×4的數(shù)組*/
┆a[3][4]=3;
在使用數(shù)組元素時,應(yīng)該注意下標(biāo)值應(yīng)在已定義的數(shù)組大小的范圍內(nèi)。第26頁/共73頁可以用下面4種方法對二維數(shù)組初始化數(shù)據(jù)類型
數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]={初始化數(shù)據(jù)};(1)
分行給二維數(shù)組賦初值。如:
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
(2)
可以將所有數(shù)據(jù)寫在一個花括弧內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};§7.2.3二維數(shù)組的引用第27頁/共73頁(3)
可以對部分元素賦初值。如
inta[3][4]={{1},{5},{9}};
100050009000也可以對各行中的某一元素賦初值,如inta[3][4]={{1},{0,6},{0,0,11}};100006000
0011
100056000000也可以只對某幾行元素賦初值。如:inta[3][4]={{1},{5,6}};
第28頁/共73頁(4)如果對全部元素都賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};它等價于:inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};在定義時也可以只對部分元素賦初值而省略第一維的長度,但應(yīng)分行賦初值。如:inta[][4]={{0,0,3},{},{0,10}};0030000001000§7.2.3二維數(shù)組的引用第29頁/共73頁§7.2.4二維數(shù)組程序舉例例7.4將一個二維數(shù)組行和列元素互換,存到另一個二維數(shù)組中。#include<stdio.h>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++){例如:a=12314456b=2536第30頁/共73頁printf(″%5d″,a[i][j]);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″);}}/*程序結(jié)束*/運行結(jié)果如下:arraya:123456arrayb:1425
3
6
第31頁/共73頁例7.5:有一個3×4的矩陣,要求編程序求出其中值最大的那個元素的值,以及其所在的行號和列號。先用N-S流程圖表示算法
,如下:§7.2.4二維數(shù)組程序舉例第32頁/共73頁程序如下:
#include<stdio.h>voidmain(){inti,j,row=0,colum=0,max;inta[3][4]={{1,2,3,4},{9,8,7,6},
{-10,10,-5,2}};max=a[0][0];
第33頁/共73頁for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf(″max=%d,row=%d,colum=%d\n″,max,row,colum);}/*程序結(jié)束*/第34頁/共73頁§7-3
字符數(shù)組用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。字符數(shù)組中的一個元素存放一個字符?!?.3.1字符數(shù)組的定義定義方法與前面介紹的類似。例如:charc[10];c[0]=′I′;c[1]=′′;c[2]=′a′;c[3]=′m′;c[4]=′′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′;第35頁/共73頁對字符數(shù)組初始化,最容易理解的方式是逐個字符賦給數(shù)組中各元素。如:charc[10]={’I′,’′,’a′,’m′,’’,′h′,′a′,′p′,′p′,′y′};
如果在定義字符數(shù)組時不進行初始化,則數(shù)組中各元素的值是不可預(yù)料的。如果花括弧中提供的初值個數(shù)(即字符個數(shù))大于數(shù)組長度,則按語法錯誤處理。
§7.3.2字符數(shù)組的初始化第36頁/共73頁如果初值個數(shù)小于數(shù)組長度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動定為空字符(即′\0′)。例如:
charc[10]={′c′,′′,′p′,′r′,′o′,′g′,′r′,′a′,′m′};第37頁/共73頁如果提供的初值個數(shù)與預(yù)定的數(shù)組長度相同,在定義時可以省略數(shù)組長度,系統(tǒng)會自動根據(jù)初值個數(shù)確定數(shù)組長度。例如:charc[]={′I′,′′,′a′,′m′,′′,′h′,′a′,′p′,′p′,′y′};數(shù)組c的長度自動定為10。
也可以定義和初始化一個二維字符數(shù)組。例如:
第38頁/共73頁
chardiamond[5][5]={{′′,′′,*′},{′′,′*′,′′,′*′},{′*′,′′,′′,′′,′*′},{′′,′*′,′′,′*′},{′′,′′,′*′}}第39頁/共73頁§7.3.3字符數(shù)組的引用例7.6輸出一個字符串。
程序如下:#include<stdio.h>voidmain(){charc[10]={’I’,’
’,’a’,’m’,’
’,’a’,’
’,
’b’,’o’,′y′};inti;for(i=0;i<10;i++)printf(″%c″,c[i]);printf(″\n″);}運行結(jié)果:Iamaboy第40頁/共73頁例7.7輸出一個鉆石圖形
#include<stdio.h>voidmain(){chardiamond[][5]={{′′,′′,′*′},{′′,′*′,′′,′*′},{′*′,′′,′′,′′,′*′},{′′,′*′,′′,′*′},{′′,′′,′*′}};inti,j;for(i=0;i<5;i++){for(j=0;j<5;j++)printf(″%c″,diamond[i][j]);printf(″\n″);}}運行結(jié)果********§7.3.3字符數(shù)組的引用第41頁/共73頁§7.3.4字符串和字符串結(jié)束標(biāo)志為了測定字符串的實際長度,C語言規(guī)定了一個“字符串結(jié)束標(biāo)志”,以字符′\0′作為標(biāo)志。如果有一個字符串,前面9個字符都不是空字符(即′\0′),而第10個字符是′\0′,則此字符串的有效字符為9個。系統(tǒng)對字符串常量也自動加一個′\0′作為結(jié)束符?!洌?′代表ASCII碼為0的字符,從ASCII碼表中可以查到,ASCII碼為0的字符不是一個可以顯示的字符,而是一個“空操作符”,即它什么也不干。用它來作為字符串結(jié)束標(biāo)志不會產(chǎn)生附加的操作或增加有效字符,只起一個供辨別的標(biāo)志。第42頁/共73頁可以用字符串常量來使字符數(shù)組初始化。例如charc[]={″Iamhappy″};也可以省略花括弧,直接寫成charc[]=“Iamhappy″;
它與下面的數(shù)組初始化等價charc[]={′I′,′′,′a′,′m′,′′,′h′,′a′,′p′,′p′,′y′,′\0′}注意再比如charc[10]={"China″};
數(shù)組c的前5個元素為′C′,′h′,′i′,′n′,′a′,第6個元素為′\0′,后4個元素也設(shè)定為空字符?!?.3.4字符串和字符串結(jié)束標(biāo)志第43頁/共73頁需要說明的是:字符數(shù)組并不要求它的最后一個字符為′\0′,甚至可以不包含′\0′。例如:charc[5]={′C′,′h′,′i′,′n′,′a′};這樣寫完全是合法的。但是由于系統(tǒng)對字符串常量自動加一個′\0′。因此,人們?yōu)榱耸固幚矸椒ㄒ恢拢谧址麛?shù)組中也常人為地加上一個′\0′。如:charc[6]={′C′,′h′,′i′,′n′,′a′,′\0′};這樣做,這樣做是為了便于引用字符數(shù)組中的字符串。第44頁/共73頁定義了以下的字符數(shù)組∶charc[]={”Pascalprogram”};現(xiàn)在,想用一個新的字符串代替原有的字符串”Pascalprogram”
,從鍵盤向字符數(shù)組輸入∶Hello如果不加′\0′的話,字符數(shù)組中的字符如下∶Hellolprogram例如第45頁/共73頁§7-3
字符數(shù)組§7.3.5字符數(shù)組的輸入輸出字符數(shù)組的輸入輸出可以有兩種方法:
逐個字符輸入輸出。用格式符“%c”輸入或輸出一個字符。將整個字符串一次輸入或輸出。用“%s”格式符,意思是對字符串的輸入輸出。
第46頁/共73頁charc[]={″China″};printf(″%s″,c);
例如在內(nèi)存中數(shù)組c的狀態(tài)第47頁/共73頁用“%s”格式符輸出字符串時,printf函數(shù)中的輸出項是字符數(shù)組名,而不是數(shù)組元素名。如:寫成下面這樣是不對的:printf(″%s″,c[0]);如果數(shù)組長度大于字符串實際長度,也只輸出到遇′\0′結(jié)束。輸出字符不包括結(jié)束符′\0′。如:charc[10]={″China″};/*字符串長度為5,連’\0’共占6個字節(jié)*/printf(″%s″,c);只輸出字符串的有效字符“China”,而不是輸出10個字符。這就是用字符串結(jié)束標(biāo)志的好處。說明第48頁/共73頁(4)如果一個字符數(shù)組中包含一個以上′\0′,則遇第一個′\0′時輸出就結(jié)束。可以用scanf函數(shù)輸入一個字符串。例如scanf(″%s″,c);scanf函數(shù)中的輸入項c是已定義的字符數(shù)組名,輸入的字符串應(yīng)短于已定義的字符數(shù)組的長度。例如,定義charc[6];
從鍵盤輸入:
China↙系統(tǒng)自動在China后面加一個′\0′結(jié)束符。
說明第49頁/共73頁如果利用一個scanf函數(shù)輸入多個字符串,則在輸入時以空格分隔。例如:charstrl[5],str2[5],str3[5];scanf(″%s%s%s″,str1,str2,str3);輸入數(shù)據(jù):Howareyou?數(shù)組中未被賦值的元素的值自動置′\0′。第50頁/共73頁若改為charstr[13];scanf(″%s″,str);如果輸入以下12個字符Howareyou?大家思考一下str[13]數(shù)組中存放的結(jié)果會是什么呢?由于系統(tǒng)把空格字符作為輸入的字符串之間的分隔符,因此只將空格前的字符“How”送到str中。由于把“How”作為一個字符串處理,故在其后加′\0′。第51頁/共73頁分析圖中所示的字符數(shù)組用8進制形式輸出數(shù)組c的起始地址printf(″%o″,c);
輸出數(shù)組c的起始地址2000。
printf(″%s″,c);按字符數(shù)組名c找到其數(shù)組起始地址,然后逐個輸出其中的字符,直到遇′\0′為止。需要注意:scanf函數(shù)中的輸入項如果字符數(shù)組名。不要再加地址符&,因為在C語言中數(shù)組名代表該數(shù)組的起始地址。下面寫法不對:scanf(″%s″,&str);第52頁/共73頁§7.3.6字符串處理函數(shù)在C的函數(shù)庫中提供了一些用來處理字符串的函數(shù),使用方便。幾乎所有版本的C編譯系統(tǒng)都提供這些函數(shù)。下面介紹幾種常用的函數(shù)。
1.puts函數(shù)其一般形式為:puts(字符數(shù)組)其作用是將一個字符串(以′\0′結(jié)束的字符序列)輸出到終端。假如已定義str是一個字符數(shù)組名,且該數(shù)組已被初始化為"China"。則執(zhí)行puts(str);其結(jié)果是在終端上輸出China。由于可以用printf函數(shù)輸出字符串,因此puts函數(shù)用的不多。第53頁/共73頁用puts函數(shù)輸出的字符串中可以包含轉(zhuǎn)義字符。例如:charstr[]={″China\nBeijing″};puts(str);輸出結(jié)果:ChinaBeijing在輸出時,將字符串結(jié)束標(biāo)志′\0′轉(zhuǎn)換成′\n′,即輸出完字符串后換行。第54頁/共73頁2.gets函數(shù)其一般形式為:gets(字符數(shù)組)其作用是從終端輸入一個字符串到字符數(shù)組,并且得到一個函數(shù)值。該函數(shù)值是字符數(shù)組的起始地址。如執(zhí)行下面的函數(shù):gets(str)從鍵盤輸入:Computer↙§7.3.6字符串處理函數(shù)第55頁/共73頁將輸入的字符串"Computer"送給字符數(shù)組str(請注意送給數(shù)組的共有9個字符,而不是8個字符),函數(shù)值為字符數(shù)組str的起始地址。一般利用gets函數(shù)的目的是向字符數(shù)組輸入一個字符串,而不大關(guān)心其函數(shù)值。注意:用puts和gets函數(shù)只能輸入或輸出一個字符串,不能寫成puts(str1,str2)
或gets(str1,str2)第56頁/共73頁3.strcat函數(shù)其一般形式為:strcat(字符數(shù)組1,字符數(shù)組2)Strcat的作用是連接兩個字符數(shù)組中的字符串,把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后得到一個函數(shù)值——字符數(shù)組1的地址?!?.3.6字符串處理函數(shù)第57頁/共73頁例如:charstr1[30]={″People′sRepublicof″};charstr2[]={″China″};print(″%s″,strcat(str1,str2));
輸出:People′sRepublicofChina
第58頁/共73頁4.strcpy函數(shù)其一般形式為:strcpy(字符數(shù)組1,字符串2)
strcpy是“字符串復(fù)制函數(shù)”。作用是將字符串2復(fù)制到字符數(shù)組1中去。例如:charstr1[10],str2[]={″China″};strcpy(str1,str2);
§7.3.6字符串處理函數(shù)第59頁/共73頁1.字符數(shù)組1必須定義得足夠大,以便容納被復(fù)制的字符串。字符數(shù)組1的長度不應(yīng)小于字符串2的長度。
2.“字符數(shù)組1”必須寫成數(shù)組名形式(如str1),“字符串2”可以是字符數(shù)組名,也可以是一個字符串常量。如strcpy(str1,″China″);
3.復(fù)制時連同字符串后面的′\0′一起復(fù)制到字符數(shù)組1中。
4.可以用strcpy函數(shù)將字符串2中前面若干個字符復(fù)制到字符數(shù)組1中去。例如:strcpy(str1,str2,2);作用是將str2中前面2個字符復(fù)制到str1中去,然后再加一個‘\0’。第60頁/共73頁5.不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。如下面兩行都是不合法的:str1=″China″;str1=str2;
而只能用strcpy函數(shù)將一個字符串復(fù)制到另一個字符數(shù)組中去。用賦值語句只能將一個字符賦給一個字符型變量或字符數(shù)組元素。如下面是合法的:chara[5],c1,c2;c1=′A′;c2=′B′;a[0]=′C′;a[1]=′h′;a[2]=′i′;a[3]=′n′;a[4]=′a′;
第61頁/共73頁5.strcmp函數(shù)其一般形式為:strcmp(字符串1,字符串2)
strcmp的作用是比較字符串1和字符串2。例如:strcmp(str1,str2);strcmp(″China″,″Korea″);strcmp(str1,″Beijing″);§7.3.6字符串處理函數(shù)第62頁/共73頁"A"<"B",
"a">"A","computer">"compare","36+54">"!$","CHINA">"CANADA","DOG"<"cat"
字符串比較的規(guī)則與其他語言中的規(guī)則相同,即對兩個字符串自左至右逐個字符相比(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到′\0′為止。如全部字符相同,則認(rèn)為相等;若出現(xiàn)不相同的字符,則以第一個不相同的字符的比較結(jié)果為準(zhǔn)。
例如第63頁/共73頁比較的結(jié)果由函數(shù)值帶回(1)
如果字符串1=字符串2,函數(shù)值為0。(2)
如果字符串1>字符串2,函數(shù)值為一正整數(shù)。(3)
如果字符串1<字符串2,函數(shù)值為一負(fù)整數(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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度房地產(chǎn)項目土地出讓合同范本
- 2025年度二手車分期交易車輛交易資金監(jiān)管服務(wù)合同
- 二零二五年度定制珠寶首飾設(shè)計制作合同
- 二零二五年度小區(qū)物業(yè)設(shè)施智能化升級改造合同
- 2025年度綠色建筑裝修公司技術(shù)專利轉(zhuǎn)讓合同樣本
- 2025年度房產(chǎn)抵押貸款合同期限超借款期限專項協(xié)議
- 2025年度國際貿(mào)易報關(guān)代理委托合同
- 2025年度科技園區(qū)租賃合同格式范文含技術(shù)創(chuàng)新支持
- 2025年度創(chuàng)意辦公空間租賃合同書
- 2025年度人工智能技術(shù)研發(fā)與應(yīng)用合同補充協(xié)議
- 國有金融企業(yè)年金管理辦法
- 最簡單個人簡歷模板
- 物業(yè)服務(wù)有限公司突發(fā)停電應(yīng)急處理流程圖
- 安全學(xué)原理第2版-ppt課件(完整版)
- 2022年《民法學(xué)一》課程教案
- 收展基本法大賽試題及答案
- 2021年消毒供應(yīng)室護理質(zhì)量檢查表
- 老年人的跌倒預(yù)防課件
- 2022年山西省中考物理試題(含答案)
- QC成果:預(yù)制扭王字塊體表面缺陷控制知識分享
- 《水上加油站安全與防污染技術(shù)要求》J
評論
0/150
提交評論