版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、123保存大量保存大量同類型的同類型的相關數(shù)據(jù)相關數(shù)據(jù)45a9a8a7 a1a0數(shù)組首地址數(shù)組首地址基類型基類型下標從下標從0開始開始6a9a8a7 a1a078如:如: int a5=6,2,3;int a5=6,2,3;等價于等價于: : a0=6; a1=2;a2=3; a3=0; a4=0;a0=6; a1=2;a2=3; a3=0; a4=0; int a=1,2,3,4,5,6;int a=1,2,3,4,5,6;編譯系統(tǒng)根據(jù)初值個數(shù)確定數(shù)組編譯系統(tǒng)根據(jù)初值個數(shù)確定數(shù)組長度(元素個長度(元素個數(shù)數(shù))int a5=0int a5=0,0 0,0 0,0 0,00; 或或 int a5
2、=0int a5=0;910main() int a4 = 1,2,3,4, b4; b = a; 解決方法解決方法 方法方法1:1:逐個元素賦值逐個元素賦值 b0=a0; b1=a1; b2=a2; b3=a3; 方法方法2:2:通過循環(huán)賦值通過循環(huán)賦值 int i; for (i=0;i4;i+) bi = ai; 原因原因: :數(shù)組名表示數(shù)組的首地址數(shù)組名表示數(shù)組的首地址, ,其值不可改變其值不可改變! !11121312345612078910111415只能逐個對數(shù)組元素進行操作(字符數(shù)組例外)只能逐個對數(shù)組元素進行操作(字符數(shù)組例外)int a10,i;scanf( %d ,&am
3、p;ai);for (i=0;i10;i+) scanf( %d ,&ai);printf( %d ,ai);for (i=0;i10;i+) printf( %d ,ai);16程序運行結果:81 64 49 36 25 16 9 4 1 017步驟步驟: :1. 1. 輸入輸入:for:for循環(huán)輸入循環(huán)輸入1010個整數(shù)個整數(shù)2. 2. 處理處理: :(a) (a) 先令先令max=min=x0max=min=x0(b) (b) 依次用依次用xixi和和max,minmax,min比較比較( (循環(huán)循環(huán)) ) 若若maxxi,maxxi,minxi,令令min=ximin=xi3
4、. 3. 輸出輸出: :maxmax和和min min 18#include void main() int x10,i,max,min; for(i=0;i10;i+) printf(“ Enter x%d:n“ , i+1);scanf(%d, &xi); max=min=x0; for(i=1;i10;i+) if(maxxi) min=xi; printf(Max is %dn,max); printf(Min is %dn,min);#include #define SIZE 10void main() int xSIZE,i,max,min; for(i=0;iSIZE;i
5、+) printf(“ Enter x%d:n“ , i+1);scanf(%d, &xi); max=min=x0; for(i=1;iSIZE;i+) if(maxxi) min=xi; printf(Max is %dn,max); printf(Min is %dn,min);19)3()2(12) 1(1121nFFFnFnFnnn20)3()2(12) 1(1121nFFFnFnFnnn21方法一:方法一: i i: 0: 04 a4 ai i a9-i a9-i 22方法二:方法二: for(for(i i=0,j=9; =0,j=9; i ija1,則交換;然后比較第二
6、個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第n個數(shù)比較為止第一趟冒泡排序,結果最大的數(shù)被安置在最后一個元素位置上(2)對前n-1個數(shù)進行第二趟冒泡排序,結果使前n-1個數(shù)中最大的數(shù)被安置在 第n-1個元素位置(3)重復上述過程,共經過n-1趟冒泡排序后,排序結束例5:排序問題:冒泡排序(交換排序)、選擇排序24例例38 49 65 76 13 27 30 97 第一趟38 49 65 13 27 30 76 第二趟38 49 13 27 30 65 第三趟38 13 27 30 49 第四趟13 27 30 38 第五趟13 27 30 第六趟49 38 65 97 76 13 27 30
7、初始順序n=8384976971397972730971376762713652765306513134949304927382738303876 13 27 第七趟用冒泡法對8個數(shù)排序(圖解)30如果有如果有n n個個數(shù),則要數(shù),則要進行進行n-1n-1趟趟比較。比較。在第在第j j趟比趟比較中要進較中要進行行n-jn-j次兩次兩兩比較。兩比較。25輸入輸入8個數(shù)給個數(shù)給a0 到到 a7for i=1 to 7for j=0 to 7-iajaj+1真真假假ajaj+1輸出輸出a0 到到 a7#include void main() int a8,i,j,t; for(i=0;i8;i+)
8、scanf(%d,&ai); for(i=1;i=7;i+) for (j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; for(i=0;i8;i+)printf(%d ,ai);數(shù)據(jù)定義:數(shù)據(jù)定義:數(shù)組:數(shù)組:a8循環(huán)變量:循環(huán)變量:i,j 外循環(huán):外循環(huán):i=1 to 7 內循環(huán):內循環(huán):j=0 to 7-i交換:交換: ajaj+1交換中間變量:交換中間變量:t26方法方法2 2:用簡單用簡單選擇法選擇法對對7 7個個數(shù)(數(shù)(少少1-1-畫圖方便畫圖方便)排序)排序 選擇排選擇排序序排序過程排序過程: : 由小到大排序由小到大排序(1 1)首先)首先從從n n個
9、數(shù)中找出最小的個數(shù)中找出最小的(通過(通過n-1n-1次比較次比較),),將它將它與第一個數(shù)交換與第一個數(shù)交換第一趟選擇排序第一趟選擇排序,結果,結果最小最小的數(shù)被安的數(shù)被安置在置在第一個元素位置第一個元素位置上上;(2 2)再從剩余的)再從剩余的n-1n-1個數(shù)中找出個數(shù)中找出次小次小的的數(shù)(數(shù)(通過通過n-2n-2次比較次比較),將它與第二個數(shù)交換,將它與第二個數(shù)交換第二趟選擇排序第二趟選擇排序;(3 3)重復上述過程,共經過)重復上述過程,共經過n-1n-1趟趟排序后,排序結束排序后,排序結束。27例初始: 49 38 65 97 76 13 27 kji=11349一趟: 13 38
10、65 97 76 49 27 i=22738二趟: 13 27 65 97 76 49 38 三趟: 13 27 38 97 76 49 65 四趟: 13 27 38 49 76 97 65 五趟: 13 27 38 49 65 97 76 六趟: 13 27 38 49 65 76 97 kkkkjjjjjjjjjj例 用簡單選擇法對10個數(shù)排序28#include void main() int a7,i,j,k,t; for(i=0;i7;i+) scanf(%d,&ai); for(i=1;i=6;i+) k=i-1; for(j=i; j=6;j+) if(ajak) k=
11、j; if(k!=i-1) t=ai-1; ai-1=ak; ak=t; for(i=0;i7;i+)printf(%d ,ai);冒泡排序、選擇排序比較次數(shù):冒泡排序、選擇排序比較次數(shù): (n-1)+(n-2)+1=n(n-1)/2輸入輸入7個數(shù)給個數(shù)給a0 到到 a6for i=1 to 6for j=i to 6ajak真真假假k=j輸出輸出a0 到到 a7k=i-1k!=i-1真真假假ai ak29 存儲類型數(shù)據(jù)類型數(shù)組名存儲類型數(shù)據(jù)類型數(shù)組名 常量表達式常量表達式 常量表達式常量表達式 ;例例: : intint a34; a34; float b25; float b25; int
12、int c234; c234; intint a3,4; a3,4; ( ) 行數(shù)行數(shù)列數(shù)列數(shù)元素個數(shù)元素個數(shù)= =行數(shù)行數(shù)* *列數(shù)列數(shù)303132下圖表示對下圖表示對a34數(shù)組存數(shù)組存放的順序放的順序 int a32a01a10a11a20a21014523a00a00 a01a10 a11a20 a2133int c23401234567.20212223c000c001c002c003c010c011c012c013c020c021c022c023c100c101c102c103c110c111c112c113c120c121c122c12334例 int a34;2016172018
13、1920202120222320089201011201213201415200012002320045200067a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23每個元素ai由包含4個元素的一維數(shù)組組成二維數(shù)組a是由3個元素組成a0a1a2行名014523a01a02a03a10a11a00a13a20a21a22a23a1267101189a0a1a2二維數(shù)組可被看作是一種特殊的一維數(shù)組;二維數(shù)組可被看作是一種特殊的一維數(shù)組;它的元素又是一個一維數(shù)組。它的元素又是一個一維數(shù)組。35例如:例如: a23 a23 表示表示a a數(shù)組的第三行四列的元素。
14、數(shù)組的第三行四列的元素。 下標可以是整型表達式,如下標可以是整型表達式,如 a2-12a2-12* *2-12-1 不要寫成不要寫成 a2,3a2,3,a2-1,2a2-1,2* *2-12-1形式形式 數(shù)組定義數(shù)組定義時方括號中給出的是某一維的長度;只能是時方括號中給出的是某一維的長度;只能是常量常量 數(shù)組元素數(shù)組元素中下標是該元素的位置標識;常量,中下標是該元素的位置標識;常量,變量變量或表達式或表達式 36數(shù)組元素可以出現(xiàn)在表達式中,也可以被賦值數(shù)組元素可以出現(xiàn)在表達式中,也可以被賦值例如:例如:b12=a23/2b12=a23/2在使用數(shù)組元素時,應該注意下標值應在已定義的數(shù)組大小的在
15、使用數(shù)組元素時,應該注意下標值應在已定義的數(shù)組大小的范圍內。范圍內。intint a34; / a34; /* * 定義定義a a為為3 34 4的數(shù)組的數(shù)組 * */ / a34=3; a34=3; 37383940414243數(shù)組的輸入和輸出只能數(shù)組的輸入和輸出只能逐個逐個對數(shù)組元素進行操作對數(shù)組元素進行操作(字符數(shù)組例外)(字符數(shù)組例外)int a23,i,j;輸入第輸入第i行第行第j列元素:列元素:scanf(“%d”,&aij);輸入整個數(shù)組元素:輸入整個數(shù)組元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij);輸出第輸
16、出第i行第行第j列列元素:元素:printf(“%d”,aij);輸出整個數(shù)組元素:輸出整個數(shù)組元素:for (i=0;i2;i+) for(j=0;j3;j+) printf(“%d”,aij);4445464748495051525354555657哈,找到了!哈,找到了!事先不必排序事先不必排序58哈,找到了!哈,找到了!按升序排序按升序排序59唉,沒找到!唉,沒找到!60找到時返回找到時返回下標位置下標位置找不到時找不到時 返回返回-1-1若未按學號排序,若未按學號排序,則如何修改程序?則如何修改程序?61void DataSort(int score, long num, int n
17、) /*選擇法選擇法*/ int i, j, k, temp1; long temp2; for (i=0; in-1; i+) k = i; for (j=i+1; jn; j+) if (numj numk) k = j; /*記錄最大數(shù)下標位置記錄最大數(shù)下標位置*/ if (k != i) /*若最大數(shù)不在下標位置若最大數(shù)不在下標位置i*/ temp1 = scorek; scorek = scorei; scorei = temp1; temp2 = numk; numk = numi; numi = temp2; 按學號由小按學號由小到大排序到大排序62a00a01a02a10a11
18、a12a00a01a02a10a11a12實際傳送的是數(shù)組第一個元素的地址實際傳送的是數(shù)組第一個元素的地址63a00a01a02a10a11a12a00a01a02a10a11a12實際傳送的是數(shù)組第一個元素的地址實際傳送的是數(shù)組第一個元素的地址偏移偏移1*3+2646566可省略數(shù)組第一維的長度可省略數(shù)組第一維的長度不能省略第二維的長度不能省略第二維的長度67686970一串以一串以00結尾的字符在結尾的字符在CC語言中被看作字符串語言中被看作字符串用用雙引號雙引號括起的一串字符是括起的一串字符是字符串常量字符串常量,CC語言自動為語言自動為其添加其添加00終結符終結符CC語言并語言并沒有沒
19、有為字符串提供任何為字符串提供任何專門的表示法專門的表示法,完全使,完全使用字符數(shù)組和字符指針來處理用字符數(shù)組和字符指針來處理用來用來存放字符數(shù)據(jù)存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組的數(shù)組是字符數(shù)組每個元素都是字符類型的數(shù)組每個元素都是字符類型的數(shù)組字符數(shù)組是數(shù)組的一個字符數(shù)組是數(shù)組的一個特殊情況特殊情況,定義、引用方法同前,定義、引用方法同前,但也有其,但也有其獨特獨特的引用方法。的引用方法。71例例 int c10, ch34;例例 char c10, ch34;72 例例 char ch5=B,o,y;char ch5=B,o,y;ch0ch0B Bo oy y0000逐個字符賦值逐個字符賦值c
20、h1ch1 ch2ch2 ch3ch3 ch4ch4 例例 char ch5=H,e,l,l,o;char ch5=H,e,l,l,o;ch0ch0H He el ll lo o逐個元素賦值逐個元素賦值ch1ch1 ch2ch2 ch3ch3 ch4ch4如果初值個數(shù)如果初值個數(shù)小于小于數(shù)組長度,則只將這些字符賦給數(shù)組中前面那些元素,數(shù)組長度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動定為其余的元素自動定為空字符空字符。 例例 char diamond5=char diamond5=.,., .,.,* *,.,.,* *,.,.,* *, , * *, , ., ., ., .,
21、. , ,* *,.,.,* *, , .,.,* *,., .,., .,* *;二維字符數(shù)組初始化二維字符數(shù)組初始化. . .* *0000. .* *. .* *00* *. . . .* *. .* *. .* *00. . .* *0000diamond0diamond0diamond1diamond1diamond2diamond2diamond3diamond3diamond4diamond473 例例 char ch6=“Hello”; char ch6=“Hello”; char ch=“Hello”;用字符串常量用字符串常量ch0Helloch1ch2ch3ch40ch57
22、4以字符串方式賦值時,必須保證數(shù)組元素個數(shù)以字符串方式賦值時,必須保證數(shù)組元素個數(shù)字符個數(shù)字符個數(shù)+1+1。(后面自動加一個(后面自動加一個00) char a char a6 6=“hello”; =“hello”; char fruit7=“Apple”,”O(jiān)range”, ”Grape”,”Pear”,”Peach”;char fruit7=“Apple”,”O(jiān)range”, ”Grape”,”Pear”,”Peach”;二維字符數(shù)組初始化二維字符數(shù)組初始化fruit0fruit0fruit1fruit1fruit2fruit2fruit3fruit3fruit4fruit4A Ap p
23、p pl le e0000OOr ra an ng ge e00GGr ra ap pe e0000P Pe ea ar r000000P Pe ea ac ch h000075例:例: #include void main() char a11= “I am happy”, b10; int i; for (i=0;i10;i+) scanf(“%c”,&bi); for (i=0;i11;i+) printf(“%c”,ai); printf(“n”); for (i=0;i10;i+) printf(“%c”,bi);76例例:用用%c void main() char str5
24、; int i; for(i=0;i5;i+) scanf(“%c”, &stri); for(i=0;i5;i+) printf(“%c”, stri);例例:用用%s void main() char str5; scanf(“%s”, str); printf(“%s”, str);用字符數(shù)組名用字符數(shù)組名,遇遇0結束結束例:用例:用putcharfor (i=0; si!=0; i+) putchar(si); putchar(n);77使用使用scanfscanf函數(shù)和格式控制函數(shù)和格式控制%s%s接收字符串給數(shù)組時,接收字符串給數(shù)組時,scanfscanf函數(shù)中的地址表列部
25、分應該是函數(shù)中的地址表列部分應該是數(shù)組名數(shù)組名。如果地址表列部分寫成如果地址表列部分寫成某個數(shù)組元素的地址某個數(shù)組元素的地址,所接收的,所接收的字符串將從該元素開始存入數(shù)組。字符串將從該元素開始存入數(shù)組。#includevoid main()char a20=abc;scanf(%s,&a2);printf(%sn,a);scanf(%s, a);等價于等價于 :scanf(%s,&a0);輸入:輸入:Hello輸出:輸出:abHello不加不加&78使用使用printfprintf函數(shù)和格式控制函數(shù)和格式控制%s%s輸出字符數(shù)組中的字符串時輸出字符數(shù)組中的字符串時,p
26、rintfprintf函數(shù)中的輸出表列部分應該是函數(shù)中的輸出表列部分應該是數(shù)組名數(shù)組名。如果輸出。如果輸出表列部分寫成某個表列部分寫成某個數(shù)組元素的地址數(shù)組元素的地址,輸出將從該元素開,輸出將從該元素開始。始。#includevoid main()char a20=abc;scanf(%s,&a2);printf(%sn,&a2);輸入:輸入:Hello輸出:輸出:Hello79#includevoid main()char a20;scanf(%s,a);printf(%sn,a);輸入:輸入:How are you?輸出:輸出:How使用使用scanfscanf函數(shù)和格式控
27、制函數(shù)和格式控制%s%s接收用戶輸入的字符串時接收用戶輸入的字符串時,如果字符串中,如果字符串中包含有空格包含有空格,將只接收第一個空格前面,將只接收第一個空格前面的字符串部分。的字符串部分。80#includevoid main()char a20=a,b, 0 ,c,d,0,e,f; printf(%sn,a);輸出:輸出:ab#includevoid main() char a20=a,b, 0 ,c,d,0,e,f; int i; for(i=0;i20;i+) printf(%c,ai); printf(n);輸出:輸出:ab cd ef使用使用printfprintf函數(shù)輸出數(shù)組中
28、函數(shù)輸出數(shù)組中的字符串時,遇到字符串結的字符串時,遇到字符串結束標志束標志00時輸出停止時輸出停止,不,不輸出輸出00及其以后其它元素及其以后其它元素的值。的值。假如字符數(shù)組中有假如字符數(shù)組中有多個多個00,僅輸出第一個僅輸出第一個00之前之前各各元素的值。元素的值。81(5 5)使用)使用scanfscanf函數(shù)和格式控制函數(shù)和格式控制%s%s接收字符串給數(shù)組時接收字符串給數(shù)組時,字符串包含的,字符串包含的字符個數(shù)數(shù)組長度減字符個數(shù)數(shù)組長度減1 1(6 6)使用)使用scanfscanf函數(shù)和格式控制函數(shù)和格式控制%c%c接收字符串給數(shù)組時接收字符串給數(shù)組時,可以在字符串末尾,可以在字符串末
29、尾人為添加一個字符串結束標志人為添加一個字符串結束標志00 82#include void main() char a15,b5,c5; scanf(%s%s%s,a,b,c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);輸出:輸出:a=How b=are c=you? a=How運行情況:運行情況:輸入:輸入:How are you?輸入:輸入:How are you?scanf中中%s輸入時輸入時,遇遇空格或、空格或、tab鍵或回車鍵或回車結束結束83使用字符串使用字符串輸入、輸出函數(shù)時,應把庫文件輸入、輸出函數(shù)
30、時,應把庫文件“stdio.h”stdio.h”包含到程序中包含到程序中;使用;使用其它字符串處理函數(shù)時,應把庫文件其它字符串處理函數(shù)時,應把庫文件“string.h”string.h”包含到程序中包含到程序中格式:格式:gets(gets(字符數(shù)組字符數(shù)組) )功能功能:從鍵盤輸入一以回車結束的字符串放入字符數(shù)組中,:從鍵盤輸入一以回車結束的字符串放入字符數(shù)組中, 并自動加并自動加00說明:說明:輸入串長度應小于字符數(shù)組長輸入串長度應小于字符數(shù)組長 (1 1)getsgets函數(shù)執(zhí)行時僅需要一個地址,函數(shù)執(zhí)行時僅需要一個地址,對該地址對該地址是不是數(shù)組首地址并不作要求是不是數(shù)組首地址并不作要
31、求。#include#includevoid main()void main() char s20=abc;char s20=abc; gets(gets(&s2)&s2); ; printf(%sn,s);printf(%sn,s); (2 2)getsgets函數(shù)以函數(shù)以回車回車作為用戶輸入作為用戶輸入字符串字符串結束的標志結束的標志,能夠,能夠接收包含空接收包含空格格的字符串的字符串 (3 3)getsgets函數(shù)一次只能接收一個字函數(shù)一次只能接收一個字符串給一個字符數(shù)組,符串給一個字符數(shù)組, 84格式:格式:puts(puts(字符數(shù)組字符數(shù)組) )功能:功能:向顯示器
32、輸出字符串(輸出完,換行)向顯示器輸出字符串(輸出完,換行)說明:說明:字符數(shù)組必須以字符數(shù)組必須以00結束結束#include#includevoid main()void main() char a20;char a20;gets(a);gets(a);puts(a);puts(a); (1 1)putsputs函數(shù)的參數(shù)可函數(shù)的參數(shù)可以是字符數(shù)組,也可以以是字符數(shù)組,也可以是字符串常量。是字符串常量。例如:例如:puts(I am a boy);puts(I am a boy);(2 2)putsputs函數(shù)的參數(shù)可函數(shù)的參數(shù)可以是字符數(shù)組中某個元以是字符數(shù)組中某個元素的地址,這時輸出將
33、素的地址,這時輸出將從該元素開始從該元素開始3 3)putsputs函數(shù)運行時,輸函數(shù)運行時,輸出第一個字符串結束標出第一個字符串結束標志志00前的所有字符,然前的所有字符,然后將后將00作為回車輸出,作為回車輸出,可以包含轉義字符??梢园D義字符。 #include#includevoid main()void main() char a20=a,b, 0 ,c,d,0,e,f;char a20=a,b, 0 ,c,d,0,e,f;puts(a);puts(a); 輸出:輸出:abab85格式:格式:strcatstrcat( (字符數(shù)組字符數(shù)組1,1,字符數(shù)組字符數(shù)組2)2)功能:功能:
34、把字符數(shù)組把字符數(shù)組2 2連到字符數(shù)組連到字符數(shù)組1 1后面后面返值:返值:返回字符數(shù)組返回字符數(shù)組1 1的首地址的首地址說明:說明:字符數(shù)組字符數(shù)組1 1必須足夠大必須足夠大 連接前連接前, ,兩串均以兩串均以00結束結束; ;連接后連接后, ,串串1 1的的00取消取消, , 新串最后加新串最后加0086char str130=Peoples Republic of ;char str2=China;printf(%s,strcat(str1,str2); 輸出:輸出:Peoples Republic of China 87 一般形式:一般形式:strcpystrcpy( (字符數(shù)組字符數(shù)
35、組1 1,字符串,字符串2) 2) 作用:作用:將字符串將字符串2 2復制到字符數(shù)組復制到字符數(shù)組1 1中去。中去。 例如:例如: char str1 char str11010,str2str2=China;=China; strcpystrcpy(str1(str1,str2); str2); 88(1 1)字符數(shù)組字符數(shù)組1 1必須定義得必須定義得足夠大足夠大,以便容納被復制的字符串。,以便容納被復制的字符串。字符數(shù)組字符數(shù)組1 1的長度不應小于字符串的長度不應小于字符串2 2的長度。的長度。 (2 2)字符數(shù)組字符數(shù)組1 1必須寫成數(shù)組名形式必須寫成數(shù)組名形式( (如如str1)str
36、1),字符串字符串2 2可以是字可以是字符符數(shù)組名數(shù)組名,也可以是一個,也可以是一個字符串常量字符串常量。如。如strcpystrcpy(str1(str1,China)China); (3 3)復制時連同字符串后面的)復制時連同字符串后面的00一起復制一起復制到字符數(shù)組到字符數(shù)組1 1中。中。 (4 4)可以用)可以用strcpystrcpy函數(shù)將字符串函數(shù)將字符串2 2中中前面若干個字符前面若干個字符復制到字符數(shù)復制到字符數(shù)組組1 1中去。中去。例如例如: :strcpystrcpy(str1(str1,str2str2,2 2); );作用是將作用是將str2str2中中前面前面2 2個
37、個字符復制到字符復制到str1str1中去,然后再加一個中去,然后再加一個00。 89(5 5)不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個)不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。字符數(shù)組。 如:如: str1=China; str1=China; 不合法不合法 str1=str2; str1=str2; 不合法不合法用用strcpystrcpy函數(shù)只能將一個字符串復制到另一個字符數(shù)組中去。函數(shù)只能將一個字符串復制到另一個字符數(shù)組中去。用賦值語句只能將一個字符賦給一個字符型變量或字符數(shù)組元用賦值語句只能將一個字符賦給一個字符型變量或字符數(shù)組元素。素。 下面是合法的使
38、用下面是合法的使用: :char a5,c1,c2;c1=A; c2=B;a0=C; a1=h; a2=i; a3=n; a4=a; 90一般形式:一般形式:strcmpstrcmp( (字符串字符串1 1,字符串,字符串2) 2) 作用:作用:比較字符串1和字符串2。 從左到右依次比較對應字符的ASCII,大者認為對應串大。(1) 如果字符串1=字符串2,函數(shù)值為0。(2) 如果字符串1字符串2,函數(shù)值為一正整數(shù)(1)。(3) 如果字符串1str2) printf(yes);而只能用:if(strcmp(str1,str2)0) printf(yes);92一般形式:一般形式:strlens
39、trlen ( (字符數(shù)組字符數(shù)組) ) 作用:測試字符串長度的函數(shù)函數(shù)的值:字符串中的實際長度(不包括0在內)。例例 對于以下字符串,對于以下字符串,strlenstrlen(s)(s)的值為:的值為:(1 1) char char strstr1010=China;=China;(2 2) char s10=A,0,B,C,0,D; char s10=A,0,B,C,0,D;(3 3) char s =“tv0willn”; char s =“tv0willn”;答案:答案:5 5 1 3 1 3 93【例例1 1】輸入一串字符,長度小于輸入一串字符,長度小于5050,統(tǒng)計字符串中相鄰字符
40、對,統(tǒng)計字符串中相鄰字符對出現(xiàn)的頻次,然后輸出統(tǒng)計結果。比如輸入出現(xiàn)的頻次,然后輸出統(tǒng)計結果。比如輸入“abcs123”abcs123”,因為,因為a a與與b b、b b與與c c、1 1與與2 2、2 2與與3 3都是相鄰字符對,所以輸出都是相鄰字符對,所以輸出4 4。#include#include void main()void main() char s50; char s50;intint i,ni,n; ;gets(s);gets(s);i i=0;=0;n=0;n=0;while(si+1!=0)while(si+1!=0) if(sif(si i+1= =si+1)+1= =
41、si+1) n+; n+;i i+;+; printfprintf(%d(%dn,nn,n); ); 分析:分析:n將字符存入數(shù)組;將字符存入數(shù)組;n循環(huán):比較各數(shù)組元素與其相循環(huán):比較各數(shù)組元素與其相鄰數(shù)組元素的關系,如果滿足條鄰數(shù)組元素的關系,如果滿足條件(件( if(s if(si i+1= =si+1) +1= =si+1) ),則計),則計數(shù)加數(shù)加1 1;n最后輸出統(tǒng)計結果。最后輸出統(tǒng)計結果。94【例例2 2】輸入一串字符,長度小于輸入一串字符,長度小于5050,統(tǒng)計字符串中包含多少個,統(tǒng)計字符串中包含多少個單詞,輸出統(tǒng)計結果。比如輸入單詞,輸出統(tǒng)計結果。比如輸入“I am a bo
42、y”I am a boy”,輸出,輸出4 4。#include#include#include#includevoid main()void main() char s50;char s50;int i,m,n;int i,m,n;gets(s);gets(s);m=strlen(s);m=strlen(s);n=0;n=0;if(m0)if(m0) for( for(i i=0;i=0;im;im;i+)+) if(sif(si i!= != & si+1= = ) & si+1= = ) n+; n+; n+; n+; printf(%dn,n);printf(%dn,n); 分析:分析:n首先將字符串存入數(shù)組首先將字符串存入數(shù)組;n循環(huán):循環(huán):比較數(shù)組中各元素與其相比較數(shù)組中各元素與其相鄰數(shù)組元素的關系,如果該數(shù)組鄰數(shù)組元素的關系,如果該數(shù)組元素為字符,而其相鄰元素為空元素為字符,而其相鄰元素為空格格( s si i!= != & si+1= = & si+1= = ),則認為存在一個單詞,計數(shù)加則認為存在一個單詞,計數(shù)加1 1;n最后輸出統(tǒng)計結果。最后輸出統(tǒng)計結果。加上最后一加上最后一個單詞個單詞95【例例3 3】輸入輸入3 3個字符串,個字符串,輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版親子閱讀活動組織服務合同4篇
- 2025年度煤炭運輸合同電子化實施協(xié)議4篇
- 二零二五年度古籍文物儲藏保護合同3篇
- 2025年度碼頭集裝箱清洗消毒與衛(wèi)生防疫服務合同4篇
- 賓館承包經營合同
- 2025年度汽車零部件存貨質押擔保合同4篇
- 事業(yè)單位聘用合同管理工作情況自查報告
- 二零二五年度智慧農業(yè)設備供應合同商訂(2024版)3篇
- 2025年度二零二五版商標許可合同-涵蓋知識產權全領域3篇
- 母嬰行業(yè)2025年度跨境貿易代理服務合同4篇
- 《天潤乳業(yè)營運能力及風險管理問題及完善對策(7900字論文)》
- 醫(yī)院醫(yī)學倫理委員會章程
- xx單位政務云商用密碼應用方案V2.0
- 農民專業(yè)合作社財務報表(三張報表)
- 動土作業(yè)專項安全培訓考試試題(帶答案)
- 大學生就業(yè)指導(高職就業(yè)指導課程 )全套教學課件
- 死亡病例討論總結分析
- 第二章 會展的產生與發(fā)展
- 空域規(guī)劃與管理V2.0
- JGT266-2011 泡沫混凝土標準規(guī)范
- 商戶用電申請表
評論
0/150
提交評論