嵌入式語言復習2015各章教案數(shù)組56課時_第1頁
嵌入式語言復習2015各章教案數(shù)組56課時_第2頁
嵌入式語言復習2015各章教案數(shù)組56課時_第3頁
嵌入式語言復習2015各章教案數(shù)組56課時_第4頁
嵌入式語言復習2015各章教案數(shù)組56課時_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù) 組本章重點【1】數(shù)組概述:為什么要引入數(shù)組數(shù)組的定義、輸入、處理、輸出等操作【2】一維數(shù)組【3】二維數(shù)組【4】字符數(shù)組【5】數(shù)組的應用數(shù)據(jù)操作字符操作4本章難點 數(shù)據(jù)結構 邏輯結構:表、樹、圖 存儲結構 順序存儲 鏈式存儲 數(shù)組的存儲:順序存儲、其中二維數(shù)組以行為主的順序存儲 一維數(shù)組元素地址與數(shù)據(jù)表示 二維數(shù)組的行地址、元素地址及數(shù)據(jù)表示 順序存儲典型算法 數(shù)據(jù)的插入、刪除、修改 數(shù)據(jù)的查找(順序、二分法) 數(shù)據(jù)的排序(選擇法、冒泡法等)【1】數(shù)組概述4為什么要引入數(shù)組對于批量數(shù)據(jù)的處理,為了簡化程序,常采用循環(huán)方式以縮短程序,但用變量方式定義(int a,b,c,d,e;)很難用統(tǒng)一的

2、表達式表示;對于某些數(shù)據(jù)處理,需將處理得到的值保存在臨時內存單元中,等處理完成后再統(tǒng)一輸出(如:從高位到低位依次輸出n=201504的各位);因此想到了定義一組具有相同類型的變量(數(shù)組) a1,a2,a3,a4,.a100 a0,a1,a2,a3,.a99 /C語言數(shù)組方式【1】數(shù)組概述4數(shù)組:具有相同類型變量的組合a0,a1,a2,a3,.a99 /這種表示形式與一般變量名有歧義a0,a1,a2,a3,.a99 /C語言數(shù)組方式 a:數(shù)組名 a0a99:數(shù)組元素 里面內容099:數(shù)組元素的下標【1】數(shù)組概述4變量操作 #include stdio.h int main(void) int a

3、;/變量輸入scanf(%d,&a);/變量處理a=;/變量輸出printf(%dt,a);return(0); 4數(shù)組操作:批量數(shù)據(jù)#include stdio.h#define N 10int main(void)int aN;/數(shù)組元素輸入for(i=0;iN;i+)scanf(%d,&ai);/數(shù)組元素處理for(i=0;iN;i+)ai=;/數(shù)組元素輸出for(i=0;iN;i+)printf(%dt,ai);return(0);【1】數(shù)組概述4數(shù)組基本操作數(shù)組定義:與變量一樣,數(shù)組必須先定義后使用。數(shù)組引用 輸入(=、scanf、getchar) 處理 輸出【1】數(shù)組概述4C語言數(shù)

4、據(jù)類型基本類型 (unsigned) char (unsigned) short int (unsigned) int (unsigned) long int float、double構造類型 數(shù)組:數(shù)組是具有相同類型變量的組合; 結構體:struct 共用體:union 枚舉:enum【1】數(shù)組概述-數(shù)組分類數(shù)組分類一維二維數(shù)值型int a10;float b10;int a23;float b23;字符型char name20;char country320;【1】數(shù)組概述-數(shù)組作用域、存儲類別4#include stdio.h4#define N 104int Array_AN; /全局

5、數(shù)組 :默認為04static int Array_BN;/靜態(tài)全局數(shù)組:默認為04void main(void)4 4int array_aN;/動態(tài)局部數(shù)組:默認為隨機數(shù)4static int array_bN;/靜態(tài)局部數(shù)組:默認為04int i;4for(i=0;iN;i+)44printf(Array_A%d=%dtArray_B%d=%dt,i,Array_Ai,i,Array_Bi);4printf(array_a%d=%dtarray_b%d=%dn,i,array_ai,i,array_bi);44【2】一維數(shù)組42.1 一維數(shù)組定義42.2 一維數(shù)組存儲42.3 一維數(shù)組操

6、作42.4 一維數(shù)組典型錯誤42.5 一維數(shù)組示例2.1 一維數(shù)組定義qint a10;數(shù)組名:a (其值為數(shù)組在內存中的首(起始)地址)10:數(shù)組長度(該數(shù)組中有10個數(shù)組元素)a0a9:數(shù)組元素(不要寫成a1a10 ) 數(shù)組類型:表示每個數(shù)組元素占內存的字節(jié)數(shù)q說明:數(shù)組名遵循變量命名規(guī)則;常量表達式 用方括弧括起來(不要誤寫成圓括號); 可以包括常量和符號常量 #define N 10 int aN; 不能包括變量定義數(shù)組 int n=10; int an;/錯誤a0a1a2a3a4a5a6a7a8a9a數(shù)組名:表示該數(shù)組的內存起始地址1 12 24 45 50 01 16 62.1 一

7、維數(shù)組定義q數(shù)組要素:int a10;數(shù)組名:數(shù)組在內存中存儲的起始地址數(shù)組元素個數(shù):數(shù)組的長度 sizeof(a):數(shù)組總的存儲字節(jié)數(shù) sizeof(a0):數(shù)組元素的存儲字節(jié)數(shù) sizeof(a)/sizeof(a0):數(shù)組長度 10數(shù)組元素類型:對應數(shù)組元素在內存中所占字節(jié)數(shù)數(shù)組元素值:內存地址中的數(shù)據(jù)2.2 一維數(shù)組存儲4int a10;邏輯結構:a0,a1, a9存儲結構:數(shù)組元素a0,a1,a9在內存中從a地址開始連續(xù)存儲這種邏輯結構與存儲結構完全對應的存儲方式稱為順序存儲。4順序存儲只要知道起始地址與數(shù)據(jù)類型就可以根據(jù)如下公式計算第i個元素的地址:1245016+i*sizeof

8、(int)a0a1a2a3a4a5a6a7a8a9a數(shù)組名:表示該數(shù)組的內存起始地址1 12 24 45 50 01 16 62.2 一維數(shù)組存儲4int a10; /一維數(shù)組的表示4數(shù)組元素地址表示(地址)&a0 、a :第個元素地址ai、a+i :第個元素地址a+i:表示起始地址加上i個存儲單元的偏移量,1個單元含4字節(jié)&:取地址運算符4數(shù)據(jù)元素表示(數(shù)據(jù):地址里的內容)a0、*a :第個元素ai、*(a+i) :第個元素*:取內容運算符a0 *aa1 *(a+1)a2 *(a+2)a3 *(a+3)a4 *(a+4)a5 *(a+5)a6 *(a+6)a7 *(a+7)a8 *(a+8)

9、a9 *(a+9)&a0&a1&a2&a3&a4&a5&a6&a7&a8&a9aa+1a+2a+3a+4a+5a+6a+7a+8a+9地地址址地地址址里里的的內內容容數(shù)數(shù)據(jù)據(jù)2.2 一維數(shù)組存儲4int a10;/數(shù)組名表示形式4a+i /讀數(shù)組地址讀數(shù)組地址 正確正確 表示數(shù)組元素ai的地址(&ai),i表示存儲單元數(shù)(非字節(jié)數(shù)),此處一個存儲單元sizeof(int)=4字節(jié),注意不能寫成a+4*i;4a=a+i;a=./寫數(shù)組地址寫數(shù)組地址 錯誤錯誤 不能對數(shù)組名(a)賦值 :數(shù)組一旦定義,其內存起始地址就分配完成,若改變數(shù)組起始地址會涉及后面一批數(shù)據(jù)的移動,因此不允許對數(shù)組名賦值:4&

10、、*運算符:兩個運算符互逆 &:取地址運算符 &(*a)=a *:取內容運算符 *(&a0)=a0a0 *aa1 *(a+1)a2 *(a+2)a3 *(a+3)a4 *(a+4)a5 *(a+5)a6 *(a+6)a7 *(a+7)a8 *(a+8)a9 *(a+9)&a0&a1&a2&a3&a4&a5&a6&a7&a8&a9aa+1a+2a+3a+4a+5a+6a+7a+8a+9地地址址地地址址里里的的內內容容數(shù)數(shù)據(jù)據(jù)2.2 一維數(shù)組存儲#define N 10void main(void) int aN=1,2,3,4,5,6,7,8,9,10;int i;for(i=0;iN;i+)p

11、rintf(&a%d=0 x%lxta+%d=0 x%lxn,i,&ai,i,a+i);結論:數(shù)組在內存中是順序存儲的。4順序存儲特點 優(yōu)點:存儲連續(xù),存儲效率高 缺點:插入、刪除操作時必須移動大批數(shù)據(jù)2.3 一維數(shù)組操作42.3.1 初始化、賦值42.3.2 輸入42.3.3 處理42.3.4 輸出2.3 一維數(shù)組操作-初始化、賦值4數(shù)組元素得到值的兩種方法: 1、通過對數(shù)組元素初始化而使得在編譯階段得到初值。 (1)在定義數(shù)組時對數(shù)組元素賦初值;注意分號不能少int a10=56,23,12,89,21,9,11,3,98,61; /正確int a10;a=56,23,12,89,21,9

12、,11,3,98,61; / 錯誤 (2)可以只給一部分元素賦初值;int a10=1,1;/a0=1 a1=1 a3a9=0 /正確 (3)給數(shù)組中全部元素賦初值0的方法;int a10=0,0,0,0,0,0,0,0,0,0; / 正確int a10=0; /a0a9=0 / 正確 (4)在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。int a=56,23,12,89,21,9,11,3,98,61; / 正確int a; / 錯誤 2、運行階段通過賦值語句或輸入語句得到值;2.3 一維數(shù)組操作-初始化、賦值/數(shù)組元素定義時賦值void main(void) int a3=0,1,2;/常

13、用于程序調試初期,以簡化數(shù)據(jù)輸入過程/數(shù)組元素定義后逐個賦值void main(void) int a3;a0=0;a1=1;a2=2;/常見錯誤void main(void) int a3; a=1,2,3;/錯誤2.3 一維數(shù)組操作-輸入/數(shù)組元素逐個輸入void main(void) int a3;scanf(“%d%d%d”,&a0,&a1,&a2);/數(shù)組元素循環(huán)輸入void main(void) int a3, i; for(i=0;i3;i+)scanf(%d,&ai); /scanf(%d,a+i);/常見問題void main(void) int a3, i; scanf(“

14、%d”,a);/只對a0輸入2.3 一維數(shù)組操作-輸入4數(shù)組循環(huán)結構有多種形式:以下三種形式功能一樣,建議采用形式【1】for(i=0;iN;i+) /【1】ai=;for(i=0;i=N-1;i+) /【2】ai=;for(i=1;i=N;i+) /【3】ai-1=;2.3 一維數(shù)組操作-處理4寫出運行結果#include stdio.hvoid main(void) int i;int a3=0,1,2;a2=a(a0=2)+a1-1-2;for(i=0;i=A&str1=Z) astr1-A+;for(i=0;i=0;i-)printf(led_buf%d=%dn,i,led_bufi)

15、;return(0);2.3 一維數(shù)組操作-處理4比較數(shù)組元素大小4if(aiaj)4if(aiai+1)4if(ai-1ai)4i初值與終值要對應4數(shù)組元素交換4t=ai;4ai=aj;4aj=t;2.3 一維數(shù)組操作-處理4int aN+1=1,2,3,4,5,6,7,8,9,10;4左移(用于刪除數(shù)據(jù))for(i=pos;iN;i+)ai-1=ai;for(i=pos-1;ipos;i-)ai=ai-1;for(i=N-1;i=pos;i-)ai+1=ai;2.3 一維數(shù)組操作-輸出完成程序,按如圖格式輸出#include stdio.hvoid main(void)int i;int

16、a10=1,2,3,4,5,6,7,8,9,10; for( ) ; ; 2.4 一維數(shù)組典型錯誤【1】定義錯誤void main(void) int a(10); int b;void main(void) int n=10;int bn;【2】賦值錯誤void main(void) int a3;a=1,2,3;void main(void) int a10;a10=10;【3】輸入/出錯誤scanf(%d,ai);printf(%d,ai);scanf(%d,a);printf(%d,a);2.5 一維數(shù)組示例4數(shù)字濾波: 【例1】去掉數(shù)組中的最大、最小后求平均值(實驗)4隨機數(shù)產生:

17、【例7】產生一組不同的隨機數(shù)4常用算法數(shù)據(jù)插入(實驗) 、【例6】數(shù)據(jù)刪除 【例5】數(shù)據(jù)移動(實驗)數(shù)據(jù)查找 順序查找 【例4】二分法/折半法查找(有序數(shù)據(jù))數(shù)據(jù)排序: 【例2】選擇法排序 【例3】冒泡法排序4參閱:No6_1_一維數(shù)組應用.ppt2.5 一維數(shù)組工程示例14如圖所示:有2個獨立按鍵S0、S1,8個發(fā)光二極管D7D0,試通過按鍵實現(xiàn)跑馬燈的左右移。P07P06P05P04P03P02P01P00R21KR3470R41KR71KR81KR61KR51KR11KD7D6D5D4D3D2D1D0+5V發(fā)光二極管驅動電路P11P10S1獨立按鍵電路R211KGND+5VS0R201K

18、GND+5V2.5 一維數(shù)組工程示例14集成開發(fā)環(huán)境:Keil uVision4仿真環(huán)境:Proteus 7.84CPU:8051單片機4#include reg51.h /宏包含4sbit S0=P10;/定義S04sbit S1=P11;/定義S14void main(void)44while(1)44if(S0=0) /S0按下4/循環(huán)左移4else if(S1=0)/S1按下4/循環(huán)右移 44開開始始變變量量定定義義與與初初始始化化S S0 0按按下下?S S1 1按按下下?D D0 0 D D7 7循循環(huán)環(huán)點點亮亮D D7 7 D D0 0循循環(huán)環(huán)點點亮亮YesYesNo2.5 一維

19、數(shù)組工程示例14#include reg51.h4#define DELAY_1S 300004#define KEY_ENABLE 04sbit S0=P10;4sbit S1=P11;4void delay(unsigned int n)44unsigned int i;4for(i=0;in;i+)4;44void main(void)44unsigned char flag=0;4unsigned char code D=0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80;4char step;4step=0;4while(1)44if(S0

20、=KEY_ENABLE) /S0按下4flag=1;4else if(S1=KEY_ENABLE)/S1按下4flag=2;4if(flag=1) /循環(huán)左移44step+;4if(step=8)4step=0;4P0=Dstep;4delay(DELAY_1S);44else if(flag=2) /循環(huán)右移44step-;4if(step=-1)4step=7;4P0=Dstep;4delay(DELAY_1S);4 442.5 一維數(shù)組工程示例4將生成的可執(zhí)行文件(.hex)文件下載到CPU里即可運行,構成單片機應用系統(tǒng),可用于現(xiàn)場控制。2.5 一維數(shù)組工程示例4同時可購買一塊STM32

21、核心板,以便學習STM32單片機2.5 一維數(shù)組工程示例24數(shù)碼顯示:如圖為6合1共陰極數(shù)碼管,試編程實現(xiàn)如下顯示。LED 7段共陰數(shù)碼管4若段ha依次接P2.7P2.0,則各段碼數(shù)據(jù)為:4unsigned char LED_seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;4P2=LED_segi; /數(shù)碼管顯示數(shù)字i2.5 一維數(shù)組工程示例24#include reg51.h4#define DELAY_MS 2004void delay(unsigned int n)44unsigned int i;4for(

22、i=0;in;i+)4;44void main(void)44unsigned char LED_seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,4 0 x6d,0 x7d,0 x07,0 x7f,0 x6f;4while(1)44P0=0 xdf;/送2顯示的位置4P2=LED_seg2;/送2的段碼4delay(DELAY_MS);4P0=0 xef;4P2=LED_seg0;4delay(DELAY_MS);4P0=0 xf7;4P2=LED_seg1;4delay(DELAY_MS);4P0=0 xfb;4P2=LED_seg5;4delay(DELAY_MS);4

23、P0=0 xfd;4P2=LED_seg0;4delay(DELAY_MS);4P0=0 xfe;4P2=LED_seg4;4delay(DELAY_MS);442.5 一維數(shù)組工程示例24#include reg51.h4#define DELAY_MS 2004void delay(unsigned int n)44unsigned int i;4for(i=0;in;i+)4;44void main(void)44unsigned char LED_seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,4 0 x6d,0 x7d,0 x07,0 x7f,0 x6f;4uns

24、igned char LED_bit6=0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;4unsigned char i;4while(1)44for(i=0;i6;i+)44P0=LED_biti;/送2顯示的位置4P2=LED_segi;/送2的段碼4delay(DELAY_MS);4 442.5 一維數(shù)組工程示例24#include reg51.h4#define DELAY_MS 2004void delay(unsigned int n)44unsigned int i;4for(i=0;in;i+)4;44void main(void)44unsigned

25、char LED_seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,4 0 x6d,0 x7d,0 x07,0 x7f,0 x6f;4unsigned char LED_bit6=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf;4unsigned char LED_buf6=0;4unsigned long int n=201504;4unsigned char i,num;4num=0;4while(n)44LED_bufnum=(unsigned char)(n%10);4n=n/10;4num+;444i=0;4while(1)44P0=LED_

26、biti;/送位碼4P2=LED_segLED_bufi;/送段碼4delay(DELAY_MS);4i+;4if(i=num)4i=0; 44【3】二維數(shù)組-引入long int score255=050410101,82,86,74,78,050410102,81,88,80,82,-050410125,75,74,57,64;【3】二維數(shù)組的重點與難點4重點 二維數(shù)組 邏輯結構 存儲結構 二維數(shù)組表示方法 行地址 數(shù)組元素地址 數(shù)組元素 二維數(shù)組應用(雙重循環(huán)架構) 輸入 處理 輸出4難點 二維數(shù)組存儲:以行為主順序存儲 二維數(shù)組的行地址、元素地址表示形式 二維數(shù)組的元素各種表示形式【3

27、】二維數(shù)組43.1 二維數(shù)組定義43.2 二維數(shù)組存儲結構43.3 二維數(shù)組元素及其地址表示43.4 二維數(shù)組初始化43.5 二維數(shù)組輸入、處理、輸出43.6 二維數(shù)組示例3.1 二維數(shù)組定義類型說明符 數(shù)組名常量表達式 常量表達式4例:int a34;二維數(shù)組的邏輯結構二維數(shù)組的存儲結構:順序存儲,以行為主a:二維數(shù)組名(數(shù)組起始行地址)&a00:二維數(shù)組的起始元素地址&aij=&a00+i*4+j:第i行第j列元素的地址a00a01a02a03a10a11a12a13a20a21a22a23a00a01a02a03a10a11a12a13a20a21a22a23&a003.2 二維數(shù)組存儲

28、結構#include stdio.hvoid main(void)int i,j;int a34=1,2,3,4,5,6,7,8,9,10,11,12;for(i=0;i3;i+)for(j=0;j,i,j,&aij);printf(a%d%d=%dn,i,j,aij);/printf(n);/結論:順序存儲,以行為主3.3 二維數(shù)組元素及其地址表示4int a34;/二維數(shù)組地址與元素表示表示形式功能行地址a 、&a0第行行地址a+1、&a1第行行地址a+2、&a2第行行地址元素地址&aij第行列元素地址ai 、*(a+i)第行列元素地址ai+j 、*(a+i)+j第行列元素地址元素表示ai

29、j 第行列元素*(ai+j)、*(*(a+i)+j)第行列元素3.3 二維數(shù)組元素及其地址表示a00a01a02a03a10a11a12a13a20a21a22a23aa+1a+2第0行地址第i行地址第2行地址*(a+0)a0+0&a00:第0行第0列元素地址第i行第j列元素地址表示*(a+i)+jai+j&aij第i行第j列元素表示*(*(a+i)+j)*(ai+j)aij:第i行 行地址表示a+i&ai3.4 二維數(shù)組初始化4分行給二維數(shù)組賦初值,如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;4可按數(shù)組排列的順序將所有數(shù)據(jù)寫在一個花括號內,如:int a34=1

30、,2,3,4,5,6,7,8,9,10,11,12;4可以對部分元素賦初值,如:int a34=1,0,6,0,0,11;4如果對全部元素都賦初值,則定義數(shù)組時可以不指定第一維的長度(但第二維必須指定),如:int a4=1,2,3,4,5,6,7,8,9,10,11,12;3.5 二維數(shù)組輸入#include stdio.h#define M 2#define N 3void main(void) int aMN;int i,j;for(i=0;iM;i+)for(j=0;jN;j+) scanf(%d,&aij);/注意書寫格式:對齊、縮進3.5 二維數(shù)組處理4有二維數(shù)組定義#define

31、 M 3#define N 3int aMN= 502132,78,96, 502133,67,88, 502131,98,97;試實現(xiàn)第i行與第j行數(shù)據(jù)交換t=ai0;ai0=aj0aj0=t;for(k=0;kN;k+)t=aik;aik=ajkajk=t;3.5 二維數(shù)組輸出#include stdio.h#define M 2#define N 3void main(void) int aMN=1,2,3,4,5,6;int i,j;for(i=0;iM;i+)for(j=0;jN;j+) printf(%4d,aij);/輸出格式:注意分行#include stdio.h#defin

32、e M 2#define N 3void main(void) int aMN=1,2,3,4,5,6;int i,j;for(i=0;iM;i+)for(j=0;jN;j+) printf(%dt,aij);printf(n);3.6 二維數(shù)組示例4【例1】學生成績排序4【例2】矩陣處理4參閱:No6_2_二維數(shù)組應用.ppt【4】字符數(shù)組-重點、難點4重點字符串在數(shù)組中的存儲形式 ASCII 0字符串結束標志字符串操作函數(shù)應用 #include “string.h” strlen /求字符串長度 strcpy /字符串拷貝 strcmp /字符串比較 strcat /字符串連接4難點 字符

33、串地址 用字符串為數(shù)組賦值 字符串結束標志 字符串操作【4】字符數(shù)組44.1 字符數(shù)組定義與存儲44.2 字符數(shù)組初始化44.3 字符數(shù)組輸入、輸出44.4 字符串處理函數(shù)44.5 二維字符數(shù)組44.6 字符數(shù)組示例4.1 字符數(shù)組定義與存儲4一維字符數(shù)組 char c10; c0,c1,.,c9 字符型與整型相互通用,因此也可以定義為:int c10;4二維字符數(shù)組char country310; c0c1c2c3c4c5c6c7c8c9ccountry00 country01 country02 country03 country04 country05 country06 country

34、07 country08 country09country10 country11 country12 country13 country14 country15 country16 country17 country18 country19country20 country21 country22 country23 country24 country25 country26 country27 country28 country294.2 字符數(shù)組初始化4一、逐個字符賦值 char c11=I, ,a,m, ,h,a,p,p,y,0;注意: 0不能省略4二、字符串賦值char c11=I

35、am happy;char c11=I am happy; char c=I am happy; /可省略數(shù)組長度指定printf(%dt,sizeof(c); /11c0Ic1 c2ac3mc4 c5hc6ac7pc8pc9yc1004.2 字符數(shù)組初始化4char c11=I am happy;4不能寫成char c11;c= ”I am happy”;/錯誤4為什么?等號右邊:字符串常量( “I am happy” )的值是該字符串在內存中存儲的首地址等號左邊:數(shù)組名(首地址),類型一致,但數(shù)組編譯后地址就確定,不能對數(shù)組名賦值(c=)c0c1c2c3c4c5c6c7c8c9c10cIa

36、mhappy0數(shù)組常量字符串4.2 字符數(shù)組初始化4正確形式1for(i=0;i11;i+)ci=*(I am happy+i);4正確形式2 strcpy(c, I am happy); 功能:從常量字符串“I am happy”的首地址處逐個將地址里的存儲內容(字符)拷貝到字符數(shù)組c0開始處,直到0為止。 使用該函數(shù)時應包含 #include string.hc0c1c2c3c4c5c6c7c8c9c10cIamhappy0數(shù)組常量字符串4.3 字符數(shù)組輸入char str110;scanf(%s,str1);scanf(%s,&str1); /錯誤,數(shù)組名str1已經是地址注意:從鍵盤輸

37、入字符串時不要加雙引號4.3 字符數(shù)組輸出(%c)4%c:逐個字符輸出:#include stdio.hvoid main(void)char str2020= I Love China;int i;for (i=0;i Keroa) /錯誤char str110=China;char str210=Korea;if(str1trs2) /錯誤4為什么?因為常量字符串與數(shù)組名的值是地址,而字符串比較的是地址里的內容。4.4 字符串處理函數(shù)-字符串比較strcmp4正確的字符串比較大小必須采用strcmp函數(shù)進行if(strcmp(China,Keroa)0)char str110=China;

38、char str210=Korea;if(strcmp(str1,str2)0)4一、strcmp(str1,str2)功能:從str1、str2地址內分別取字符按ASCII值進行比較,若比出大小直接返回,若相等則比下一地址里的字符,直到遇結束標志0為止4strcmp(str1,str2)結果 1 :str1內字符大于str2內字符 -1:str1內字符小于str2內字符 0 :str1內字符等于str2內字符4.4 字符串處理函數(shù)-字符串比較strcmp4二、自寫字符串比較程序4測試數(shù)據(jù): “AB”,”AB” “AB”,”AC” “AB”,”AA” “AB”,”ABC” “ABC”,”AB”

39、4#include stdio.h4#define N 204void main(void)44char str1N= AB;4char str2N= AB;4int i,flag=0;4i=0;4while(str1i&str2i)44if(str1istr2i)flag=1 ;break;4else if(str1istr2i)flag=1 ;break;4else if(str1istr2i)flag=-1;break;4else i+;44printf(%dn,flag);44.4 字符串處理函數(shù)-字符串拷貝strcpy4已知 char str120; char str220=“I L

40、ove China; 試將str2內容拷貝到str1。 str1=str2; /錯誤 一、字符串拷貝函數(shù) strcpy(str1,str2); /正確str1:左邊是目標地址str2:右邊是 源地址4二、自編程實現(xiàn)字符串拷貝#include stdio.hvoid main(void)char str120;char str220=I Love China;int i;i=0;while(str2i)str1i=str2i;i+;str1i=0;printf(%sn,str1);4.4 字符串處理函數(shù)-字符串拷貝strcpy4字符交換定義一個中間字符變量t即可char c1=a;char c2

41、=b;char t;t=c1;c1=c2;c2=t;可用賦值運算符直接處理4字符串交換 必須定義一個中間字符數(shù)組char str110=BeiJing;char str210=ShangHai;char t10; /不能為char t;t=str1;str1=str2;str2=t; /錯誤strcpy(t,str1);strcpy(str1,str2);strcpy(str2,t);/正確4.4 字符串處理函數(shù)-字符串連接strcat4若有兩字符串定義:char str120=BeiJing-;char str210=ShangHai;4試將字符數(shù)組str2中的內容逐個連接到字符數(shù)組str1

42、中,連接后字符數(shù)組str1中的內容為:BeiJing- ShangHai 4一、字符串連接函數(shù)strcat(str1,str2);字符數(shù)組str1的存儲空間應夠大(足以裝下str2內容)二、自編程#include stdio.hint main(void)char str120=BeiJing-;char str210=ShangHai;int i,j;i=0;j=0;while(str1i)i+;while(str2j)str1i=str2j;i+;j+;str1i=0;printf(%sn,str1);4.4 字符串處理函數(shù)(string.h)字符操作函數(shù)字符操作函數(shù)功功 能能頭文件頭文件puts(字符數(shù)組)輸出stdio.hgets(字符數(shù)組)輸入stdio.hstrcat(字符數(shù)組1,字符數(shù)組2)連接string.hstrcpy(字符數(shù)組1,字符串2)拷貝(copy)string.hstrncpy(字符數(shù)組1,字符串2,個數(shù) )拷貝(copy)string.hstrcmp(字符串1,字符串2)比較(compare)string.hstrlen(字符串)求長度(字符實際個數(shù),length)string.hstrlwr(字符串)大寫轉換成小寫(lowercase) string.hstrupr(字符串)小寫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論