C語(yǔ)言程序設(shè)計(jì)實(shí)用教程.ppt
《C語(yǔ)言程序設(shè)計(jì)實(shí)用教程.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言程序設(shè)計(jì)實(shí)用教程.ppt(26頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
書名:C語(yǔ)言程序設(shè)計(jì)實(shí)用教程 ISBN:7-111-16742-2 作者:陳方 出版社:機(jī)械工業(yè)出版社 本書配有電子課件,實(shí)際處理的數(shù)據(jù),常常是一批批的,而不止是一個(gè)。比如,10個(gè)同學(xué)的年齡,它們都是整型數(shù)據(jù),仍用前面的定義方法,可用下面語(yǔ)句說(shuō)明: int age0,age1,age2,age3,age4,age5,age6,age7,age8,age9; 這里寫了10個(gè)age,比較麻煩。C語(yǔ)言提供了數(shù)組的表示方法: int age[10]; 數(shù)組是具有相同數(shù)據(jù)類型的變量的集合。各元素可獨(dú)立地作為一個(gè)變量被賦值和使用。數(shù)組中每個(gè)特定元素都用下標(biāo)來(lái)訪問(wèn)。 數(shù)組可以是一維的也可以是多維的。,4.1 一維數(shù)組 4.1.1 一維數(shù)組的定義 一維數(shù)組定義的一般形式為: 類型說(shuō)明符 數(shù)組名[常量表達(dá)式]; 例如: int a[10]; 它表示數(shù)組名為a,有10個(gè)元素,每個(gè)元素都是整型,這10個(gè)元素是: a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],說(shuō)明: (1)數(shù)組名定義規(guī)則和變量名相同,遵循標(biāo)識(shí)符定義規(guī)則。 (2)常量表達(dá)式要用方括號(hào)“[ ]”括起來(lái),不能用圓括號(hào)(下面用法不對(duì): int a(0);)。 (3)常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組長(zhǎng)度。 (4)常量表達(dá)式中包括常量和符號(hào)常量,不能包含變量。C語(yǔ)言不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義。例如,下面這樣定義數(shù)組是不行的: int n; int a[n]; (5)數(shù)組元素的下標(biāo)從0開(kāi)始,到(常量表達(dá)式-1)為止。因此在如上定義的數(shù)組中無(wú)a[10]元素。,4.1.2 一維數(shù)組元素的引用 數(shù)組和其他變量一樣必須先定義,后使用。C語(yǔ)言規(guī)定除字符數(shù)組外,只能逐個(gè)引用數(shù)組元素,而不能一次引用整個(gè)數(shù)組。,[例4-1] 按順序給數(shù)組的10個(gè)元素賦值,然后按逆序輸出。 程序如下: main( ) { int i,a[10]; for (i=0;i=9;i++) a[i]= i ; /*順序給數(shù)組元素賦值*/ for (i=9;i=0;i--) printf(“%d“,a[i]);/*逆序輸出數(shù)組元素的值*/ } 程序運(yùn)行結(jié)果: 9 8 7 6 5 4 3 2 1 0,4.1.3 一維數(shù)組的初始化 可以先定義數(shù)組,再給它的元素賦值,也可以在定義數(shù)組時(shí)給它賦值(稱為數(shù)組的初始化)。對(duì)數(shù)組元素的初始化可以用以下方法實(shí)現(xiàn): (1)在定義數(shù)組時(shí)對(duì)數(shù)組元素賦初值。例如: int a[10]={0,1,2,3,4,5,6,7,8,9}; 將數(shù)組元素的初值依次放在一對(duì)花括弧內(nèi)。上面的數(shù)組a經(jīng)過(guò)初始化后得: 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。 (2)可以只給一部分元素賦值。例如: int a[10]={0,1,2,3,4}; 定義a數(shù)組有10個(gè)元素,但花括弧只提供5個(gè)初值,這表示只給前5個(gè)元素賦初值,此時(shí)后5個(gè)元素值自動(dòng)賦值為0。 (3)在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。例如: int a[5]={1,2,3,4,5};可以寫成 int a[ ]={1,2,3,4,5}; 在第2種寫法中,花括弧中有五個(gè)數(shù),系統(tǒng)就會(huì)據(jù)此自動(dòng)定義數(shù)組a的長(zhǎng)度為5。,[例4-2] 用數(shù)組來(lái)處理求Fibonacci數(shù)列問(wèn)題。 main( ) { int i,f[20]={1,1}; for(i=2;i20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i20;i++) { if(i%5= =0) printf(“\n“);/*每行輸出5個(gè)數(shù)據(jù)*/ printf(“%8d“,f[i]); } } 程序運(yùn)行結(jié)果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765,[例4-3] 用冒泡法對(duì)10個(gè)數(shù)排序(由小到大)。 冒泡法的思路是:將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前頭。 若有10個(gè)數(shù): 7,0,4,8,5,9,6,1,3,2 。先進(jìn)行第1趟比較,第1次將7和0對(duì)調(diào),第2次將第2和第3個(gè)數(shù)(7和4)對(duì)調(diào),如此共進(jìn)行9次,得到0-4-7-5-8-6-1-3-2-(9)的順序,可以看到:最大的數(shù)9已“沉底”,成為最下面的一個(gè)數(shù)。經(jīng)第1趟(共9次比較)后,已得到最大的數(shù)9。 然后進(jìn)行第2趟比較,對(duì)前9個(gè)數(shù)按上法進(jìn)行比較,經(jīng)過(guò)8次比較,得到0-4-5-7-6-1-3-2-(8-9)的順序;第3趟比較,得到0-4-5-6-1-3-2-( 7-8-9)的順序;第4趟比較,得到0-4-5-1-3-2-(6-7-8-9) 的順序;第5趟比較,得到0-4-1-3-2-(5-6-7-8-9)的順序;第6趟比較,得到0-1-3-2-(4-5-6-7-8-9)的順序;第7趟比較,得到0-1-2-(3-4-5-6-7-8-9)的順序;已得到由小到大的順序,第8、9趟比較不會(huì)改變順序。共比較九趟,在第1趟中要進(jìn)行兩兩比較9次(10-1),第2趟比較8次(10-2)……第9趟比較1次(10-9)??梢酝浦?,如果有n個(gè)數(shù),只要進(jìn)行n?1趟比較,在第j趟比較中要進(jìn)行n?j次兩兩比較。,main( ) { int i,j,t;,a[10]={ 7,0,4,8,5,9,6,1,3,2}; for(i=1;ia[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0;i10;i++) printf(“%d ”,a[i]); /*按已排好的次序輸出*/ } 程序運(yùn)行結(jié)果: 0 1 2 3 4 5 6 7 8 9,4.2 二維數(shù)組 4.2.1 二維數(shù)組的定義 二維數(shù)組定義的一般形式為 類型說(shuō)明符 數(shù)組名[常量表達(dá)式1][常量表達(dá)式2] 例如:float a[3][4]; 定義a為3?4(3行4列)的數(shù)組。注意:不能寫成float a[3, 4]。 C語(yǔ)言中,二維數(shù)組中元素排列的排序是:按行存放,即在內(nèi)存中先順序存放第1行的元素,再存放第2行的元素。上面定義的數(shù)組元素在內(nèi)存中的存儲(chǔ)順序是: 第1行:a[0][0] a[0][1] a[0][2] a[0][3] 第2行:a[1][0] a[1][1] a[1][2] a[1][3] 第3行:a[2][0] a[2][1] a[2][2] a[2][3] 注意:C語(yǔ)言中二維數(shù)組的行號(hào)、列號(hào)都是從0開(kāi)始計(jì)數(shù),與人們習(xí)慣的記法不同。如上述數(shù)組第2行第3列的元素為a[1][2],而不是a[2][3]。,4.2.2 二維數(shù)組的引用 二維數(shù)組的元素的表示形式為: 數(shù)組名[下標(biāo)][下標(biāo)] 例如:a[2][3] 引用時(shí)注意: (1)使用數(shù)組元素時(shí),注意下標(biāo)值應(yīng)在已定義數(shù)組大小的范圍內(nèi)。 如數(shù)組a[n][m],數(shù)組元素由a[0][0]到a[n-1][m-1]共n*m個(gè)。 (2)下標(biāo)也可以是整型表達(dá)式,如a[2-1][2*2-1]。 (3)數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值。例如:a[1][2]=a[2][3]/2。,4.2.3 二維數(shù)組的初始化 可以用下面方法對(duì)二維數(shù)組初始化。 (1)分行給二維數(shù)組賦初值。例如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};,這種賦初值方法比較直觀,將第1個(gè)花括弧內(nèi)的數(shù)據(jù)賦給第1行的元素,將第2個(gè)花括弧內(nèi)的數(shù)據(jù)賦給第2行的元素……,即按行賦初值。 (2)將所有數(shù)據(jù)寫在一個(gè)花括弧內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。例如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 效果與第1種方法相同,但如果數(shù)據(jù)多,寫成一大片,容易遺漏,也不易檢查。第1種方法一行對(duì)一行,界限清楚。 (3)可以對(duì)部分元素賦初值: ① 對(duì)各行中的某一元素賦初值: 例如:int a[3][4]={{1},{5},{9}}; 初始化后的數(shù)組元素如下: 1 0 0 0 5 0 0 0 9 0 0 0 這種方法對(duì)非0元素少時(shí)比較方便,不必將所有的0都寫出來(lái),只需輸入少量數(shù)據(jù)。,② 對(duì)某幾行元素賦初值: int a[3][4]={{1},{5,6}}; 數(shù)組元素為: 1 0 0 0 5 6 0 0 0 0 0 0 (4)第一維的長(zhǎng)度可以不指定: ① 對(duì)全部元素賦初值時(shí),定義時(shí)第一維的長(zhǎng)度不指定,則第二維的長(zhǎng)度不能省。 例如: int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 等價(jià)于:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 系統(tǒng)會(huì)根據(jù)數(shù)據(jù)總個(gè)數(shù)分配存儲(chǔ)空間,一共12個(gè)數(shù)據(jù),每行4列,可確定為3行。 ② 分行賦初值定義時(shí),可以只對(duì)部分元素賦初值而省略第一維的長(zhǎng)度。 例如: int a[ ][4]={{0,0,3},{ },{0,10}};,[例4-5] 有一個(gè)3?4的矩陣,編程序求出其中值最小的那個(gè)元素的值及其所在的行號(hào)和列號(hào)。 [解] 先用N-S流程圖表示算法,如教材書上圖4-2所示。 據(jù)此寫出以下程序: main( ) { int i,j,row=0,colum=0,min; int a[ ][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};/*第4種賦值方法*/ min=a[0][0]; for(i=0;i=2;i++) /*外循環(huán)*/ for(j=0;j=3;j++) /*內(nèi)循環(huán)*/ if(a[i][j]min) {min=a[i][j];row=i;colum=j;} printf(“min=%d,row=%d,colum=%d\n“,min,row,colum); } 程序運(yùn)行結(jié)果:min=-10,row=2,colum=0,4.3 字符數(shù)組 用來(lái)存放字符的數(shù)組是字符數(shù)組。字符數(shù)組中的一個(gè)元素存放一個(gè)字符。 4.3.1 字符數(shù)組的定義 字符數(shù)組的定義形式為: char 數(shù)組名[常量表達(dá)式]; 例如:char c[10]; 由于在C語(yǔ)言中字符型和整型可以通用,所以上面的定義又可以寫為: int c[10]; 但一般用類型char定義。,4.3.2 字符數(shù)組的初始化 (1)可以在定義字符數(shù)組時(shí)初始化各元素。 例如:char c[10]={I, ,a,m, ,h,a,p,p,y};,(2)如果花括弧中提供的初值個(gè)數(shù)數(shù)組長(zhǎng)度,則作語(yǔ)法錯(cuò)誤處理;如果初值個(gè)數(shù)小于數(shù)組長(zhǎng)度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動(dòng)定為空字符(即‘\0’)。 例如: char c[6]={g,o,o,d }; 此時(shí) c[4]和c[5]都為‘\0’。 (3)如果初值個(gè)數(shù)與數(shù)組長(zhǎng)度相同,在定義時(shí)可以省略數(shù)組長(zhǎng)度,系統(tǒng)會(huì)自動(dòng)根據(jù)初值個(gè)數(shù)確定數(shù)組長(zhǎng)度。 例如: char c[ ]={g,o,o,d}; 數(shù)組c的長(zhǎng)度自動(dòng)定為4。 (4)二維字符數(shù)組也可以初始化。,4.3.3 字符數(shù)組的引用 引用字符數(shù)組中的一個(gè)元素,可以得到一個(gè)字符。 [例4-6] 輸出一個(gè)字符串。,程序如下: main( ) { char c[10]={I, ,a,m, ,a, ,b,o,y}; int i; for(i=0;i10;i++) printf(“%c“,c[i]);/*依次引用字符數(shù)組的元素c[i]*/ printf(“\n“); } 程序運(yùn)行結(jié)果:I am a boy,4.3.4 字符串和字符串結(jié)束標(biāo)志 字符串的初始化:用字符串常量來(lái)初始化字符數(shù)組。例如: char c[11]={“I am happy“};或 char c[ ]={“I am happy“}; 或 char c[11]=“I am happy“;或 char c[ ]=“I am happy“; 注意:上述數(shù)組c包括8個(gè)字母、2個(gè)空格,但它長(zhǎng)度不是10,而是11。因?yàn)樽址A康淖詈笥上到y(tǒng)加上一個(gè)‘\0’。因此字符串初始化時(shí),可以省略字符數(shù)組的長(zhǎng)度,由系統(tǒng)自動(dòng)匹配;如果要標(biāo)出字符數(shù)組的長(zhǎng)度,則應(yīng)大于雙引號(hào)內(nèi)的實(shí)際各種字符的個(gè)數(shù)。,4.3.5 字符數(shù)組的輸入輸出 用“%c“(char)格式符可以逐個(gè)字符輸入或輸出,用的機(jī)會(huì)較少;在大多數(shù)情況下,我們采用整個(gè)字符串輸入輸出,用“%s“(string)格式符可以實(shí)現(xiàn)整個(gè)字符串的輸入輸出。 (1)字符數(shù)組的輸出 —— printf(“%s“)函數(shù) ① 可用printf來(lái)輸出字符,輸出字符不包括結(jié)束符‘\0’。 ② 用“%s“格式符輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。下面的寫法是不對(duì)的: printf (“%s“,c[0]); ③ 如果數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,也只輸出到‘\0’結(jié)束。例如: char c[10]={“China“}; printf(“%s“,c); 也只輸出“china”5個(gè)字符,而不是輸出10個(gè)字符。這就是字符串結(jié)束標(biāo)志的好處。 ④ 如果一個(gè)字符數(shù)組中包含一個(gè)以上‘\0’,則遇到第一個(gè)‘\0’時(shí)輸出就結(jié)束。,(2)字符數(shù)組的輸入 —— scanf(“%s“)函數(shù) ① 輸入一個(gè)字符串。 例如:定義 char c[6]; 用scanf函數(shù)輸入一個(gè)字符串:scanf(“%s“,c); 從鍵盤輸入:China 系統(tǒng)自動(dòng)在后面加一個(gè)‘\0’結(jié)束符。 ② 輸入多個(gè)字符串:輸入時(shí)以空格分隔。 例如: char str1[6],str2[8],str3[8]; scanf(“%s%s%s“,str1,str2,str3); 輸入數(shù)據(jù): CHINA HOLLAND AMERICA 輸入后str1,str2,str3數(shù)組狀態(tài)為: CHINA\0 HOLLAND \0 AMERICA \0,[例4-7] 輸入、輸出一個(gè)字符串(與例4-6相比較)。 程序如下: main( ) { char c[10]; scanf(“%s“,c); printf(“%s“,c); } 程序運(yùn)行結(jié)果: 鍵盤輸入 I am a boy 回車 屏幕顯示 I am a boy,4.3.6 字符串處理函數(shù) 在C的函數(shù)庫(kù)中提供了一些用來(lái)處理字符串的函數(shù),使用方便。下面介紹幾種常用的函數(shù)。字符串標(biāo)準(zhǔn)函數(shù)的原型在頭文件string.h中。 1.輸出字符串 —— puts()函數(shù) (1)調(diào)用方式:puts(字符數(shù)組) (2)函數(shù)功能:將一個(gè)字符串(以‘\0’結(jié)束的字符序列)輸出到終端,并用‘\n’取代字符串的結(jié)束標(biāo)志‘\0’。用puts()函數(shù)輸出字符串時(shí),不要求另加換行符。 (3)使用說(shuō)明 ① 由于可以用printf函數(shù)輸出多個(gè)字符串,而puts函數(shù)只能輸出一個(gè)字符串,因此puts函數(shù)用得不多。 ② 用puts函數(shù)輸出的字符串中可以包含轉(zhuǎn)義字符。例如: char str[ ]={“China\nBeijing“}; puts(str); 輸出: China Beijing 在輸出China后,有轉(zhuǎn)義字符‘\n’,即輸出完字符串China后換行輸出字符串Beijing。,2.輸入字符串 —— gets()函數(shù) (1)調(diào)用方式:gets(字符數(shù)組)。 (2)函數(shù)功能:從鍵盤上讀取1個(gè)字符串(可以包含空格),并將其存儲(chǔ)到字符數(shù)組中去。 (3)使用說(shuō)明 ① gets()讀取的字符串,其長(zhǎng)度沒(méi)有限制,編程者要保證字符數(shù)組有足夠大的空間,存放輸入的字符串。 ② 該函數(shù)輸入的字符串中允許包含空格,而scanf()函數(shù)不允許。 ③ 從鍵盤輸入一個(gè)字符串到字符數(shù)組,得到一個(gè)函數(shù)值,該函數(shù)值是字符數(shù)組的起始地址。 ④ 用puts和gets函數(shù)只能輸入或輸出一個(gè)字符串,不能寫成: puts (str1, str2) 或gets (str1, str2) 這是它們與scanf函數(shù)和printf函數(shù)的區(qū)別。,3.連接字符串 —— strcat()函數(shù) (1)調(diào)用方式:strcat(字符串1,字符串2)。 (2)函數(shù)功能:連接兩個(gè)字符數(shù)組中的字符串,把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后得到一個(gè)函數(shù)值—字符數(shù)組1的地址。 (3)使用說(shuō)明 ① 字符數(shù)組1必須足夠大,以便容納連接后的新字符串。下例中定義str1的長(zhǎng)度為30,是足夠大的,如果在定義時(shí)改用: char str1[]={“Peoples Rebuplic of“}; 因長(zhǎng)度不夠,就會(huì)出問(wèn)題。 ② 連接前兩個(gè)字符串的后面都有一個(gè)‘\0’,連接時(shí)將字符串1后面的‘\0’取消,只在新串最后保留一個(gè)‘\0’。 例如: char str1[30]={“Peoples Republic of “}; char str2[ ]={“China“}; printf(“%s“,strcat(str1,str2)); 則輸出: Peoples Republic of China,4.復(fù)制字符串 —— strcpy()函數(shù) (1)調(diào)用方式:strcpy(字符數(shù)組1,字符串2) 其中,“字符串”可以是串常量,也可以是字符數(shù)組。 (2)函數(shù)功能:將“字符串”完整地復(fù)制到“字符數(shù)組”中,字符數(shù)組中原有內(nèi)容被覆蓋。 例如: char str1[10],str2[]={“China“}; strcpy(str1,str2); 執(zhí)行后,str1的狀態(tài)為:C h i n a \0 \0 \0 \0 \0 (3)使用說(shuō)明 ① 字符數(shù)組1必須定義得足夠大,以便容納被復(fù)制的字符串。字符數(shù)組1的長(zhǎng)度不應(yīng)小于字符串2的長(zhǎng)度。 ②“字符數(shù)組1”必須寫成數(shù)組名形式(如str1),“字符串2”可以是字符數(shù)組名,也可以是一個(gè)字符串常量。如 strcpy(str1,“China“) ③ 復(fù)制時(shí)連同字符串后面的‘\0’一起復(fù)制到字符數(shù)組1中。 ④ 不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接賦給一個(gè)字符數(shù)組。 ⑤ 可以用strcpy函數(shù)將字符串2前面若干個(gè)字符復(fù)制到字符數(shù)組1中去。例如 strcpy(str1,str2,2); 作用是將str2中前面2個(gè)字符復(fù)制到str1中去,然后再加一個(gè)‘\0’。,5.字符串比較函數(shù) —— strcmp( ) (1)調(diào)用方式:strcmp(字符串1,字符串2) (2)函數(shù)功能:比較兩個(gè)字符串的大小。字符串比較的規(guī)則與其他語(yǔ)言中相同,即對(duì)兩個(gè)字符串自左至右逐個(gè)字符相比(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到‘\0’為止。如全部字符相同,則認(rèn)為相等;若出現(xiàn)不相同的字符,則以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn)。比較的結(jié)果由函數(shù)值帶回。 如果:字符串1=字符串2,函數(shù)返回值等于0; 字符串1字符串2,函數(shù)返回值正整數(shù)。 (3)使用說(shuō)明 不能使用關(guān)系運(yùn)算符“= =”來(lái)比較兩個(gè)字符串,只能用strcmp()函數(shù)來(lái)處理。 字符串的比較函數(shù)可以用來(lái)設(shè)置用戶程序密碼。 [例4-8] 核對(duì)密碼。 main( ) {char str[10]; gets(str); if(strcmp(str,“2005-1-1“)= =0) printf(“yes!“);/*輸入字符串2005-1-1時(shí)正確*/ else exit( );/*輸入錯(cuò)誤時(shí)退出程序,exit( )函數(shù)的作用是退出程序*/ },6.求字符串長(zhǎng)度 —— strlen()函數(shù) (1)調(diào)用方式:strlen(字符串)。 (2)函數(shù)功能:求字符串(常量或字符數(shù)組)的實(shí)際長(zhǎng)度,函數(shù)值為字符串中實(shí)際長(zhǎng)度,不包括‘\0’在內(nèi)。 例如: char str[10]={“China“}; printf (“%d“,strlen(str)); 輸出結(jié)果不是10,也不是6,而是5。 也可以直接測(cè)字符串常量的長(zhǎng)度,例如: strlen (“China“),7.將字符串中大寫字母轉(zhuǎn)換成小寫字母 —— strlwr()函數(shù) (1)調(diào)用方式:strlwr(字符串)。 (2)函數(shù)功能:將字符串中的大寫字母轉(zhuǎn)換成小寫,其他字符(包括小寫字母和非字母字符)不轉(zhuǎn)換。 8.將字符串中小寫字母轉(zhuǎn)換成大寫字母 —— strupr()函數(shù) (1)調(diào)用方式:strupr(字符串)。 (2)函數(shù)功能:將字符串中小寫字母轉(zhuǎn)換成大寫,其他字符(包括大寫字母和非字母字符)不轉(zhuǎn)換。,[例4-9] 輸入一行英文單詞,單詞之間用空格隔開(kāi),統(tǒng)計(jì)其中有多少個(gè)單詞。 main( ) { char str [81]; int i, num=0,word=0; char c; gets(str); for (i=0;(c=str [i])!= \0;i++) /*從字符串的第一個(gè)字符開(kāi)始,依次賦給c,至字符串結(jié)束為止*/ if (c= =‘ ’) word=0; /*當(dāng)str [i]為空格符時(shí),word賦值0 */ else if (word= =0) { word=1;num++;} /*當(dāng)str [i] 為單詞頭一個(gè)字母時(shí),word賦值1(原來(lái)為0),num加1;當(dāng)str [i] 為單詞的后續(xù)字母時(shí),因word的值是1,不做任何操作,返回去繼續(xù)循環(huán)*/ printf(“There are %d words in the line\n“,num); } 程序運(yùn)行結(jié)果: 鍵盤輸入 I am a boy 回車 屏幕輸出 There are 4 words in the line 程序中變量i作為循環(huán)變量,num用來(lái)統(tǒng)計(jì)單詞個(gè)數(shù),word作為判別是否單詞的標(biāo)志,word=0表示未出現(xiàn)單詞,如出現(xiàn)單詞word就置成1。,本 章 小 結(jié) 1.?dāng)?shù)組是一個(gè)有序數(shù)據(jù)的集合。數(shù)組元素可以是基本數(shù)據(jù)類型,如數(shù)值型或字符型。數(shù)組元素的下標(biāo)從0開(kāi)始,到(常量表達(dá)式-1)為止。 2.一維數(shù)組有兩種方法賦值,一是使用scanf()函數(shù),二是在定義數(shù)組時(shí)給它賦值(數(shù)組的初始化)。 3.二維數(shù)組可以看成是一種特殊的一維數(shù)組,這個(gè)特殊的一維數(shù)組的元素又是一維數(shù)組。因此定義的二維數(shù)組可以理解為定義了幾個(gè)一維的數(shù)組。C語(yǔ)言的這種處理方法在數(shù)組初始化和用指針表示時(shí)顯得很方便。二維數(shù)組初始化用花括號(hào){}來(lái)分行,可以全部賦值,也可部分賦值;第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度必須指定。 4.用來(lái)存放字符的數(shù)組是字符數(shù)組。一般人們關(guān)心的是有效字符串的長(zhǎng)度而不是字符數(shù)組的長(zhǎng)度,為此,C語(yǔ)言規(guī)定了一個(gè)字符串結(jié)束標(biāo)志 —— ‘\0’,它是一個(gè)“空操作符”,不能顯示輸出。它的作用就是在程序中依靠檢測(cè)‘\0’來(lái)判定字符串是否結(jié)束。系統(tǒng)會(huì)對(duì)字符串常量自動(dòng)加一個(gè)‘\0’作為結(jié)束符。用格式符“%c”可進(jìn)行單個(gè)字符的輸入輸出,用格式符“%s”可進(jìn)行字符串的輸入輸出。遇到第一個(gè)‘\0’字符串的輸入輸出就結(jié)束。字符串的處理函數(shù)有許多,常用的有連接、復(fù)制、比較、測(cè)長(zhǎng)度、大小寫轉(zhuǎn)換等。,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語(yǔ)言程序設(shè)計(jì) 實(shí)用教程
鏈接地址:http://www.820124.com/p-2832260.html