




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、.1第六章第六章 數(shù)組數(shù)組本章目標本章目標1. 了解數(shù)組的數(shù)據(jù)結構了解數(shù)組的數(shù)據(jù)結構2. 理解一維和多維數(shù)組的定義和關系理解一維和多維數(shù)組的定義和關系3. 了解數(shù)組元素在內(nèi)存的存放規(guī)則了解數(shù)組元素在內(nèi)存的存放規(guī)則4. 了解數(shù)組元素和數(shù)組名的作用了解數(shù)組元素和數(shù)組名的作用5. 掌握數(shù)組的使用方法掌握數(shù)組的使用方法6. 掌握基本的排序算法掌握基本的排序算法.2數(shù)組名數(shù)組名數(shù)組元素的個數(shù)數(shù)組元素的個數(shù)數(shù)組元素的類型。數(shù)組元素的類型。6.1 6.1 引言引言.3 數(shù)組元素的作用相當于簡單變量數(shù)組元素的作用相當于簡單變量 數(shù)組名代表的是數(shù)組在內(nèi)存中的首地址數(shù)組名代表的是數(shù)組在內(nèi)存中的首地址 同一個數(shù)組中
2、的元素在內(nèi)存中是按順序同一個數(shù)組中的元素在內(nèi)存中是按順序連續(xù)存放的連續(xù)存放的.4形式形式: : 類型說明符類型說明符 數(shù)組名數(shù)組名常量表達式常量表達式;例例: : int a 20; float x 100;代表數(shù)組元素的個數(shù)其中 a 和 x 都是數(shù)組名。.51. 數(shù)組名的確定方法同變量名。數(shù)組名的確定方法同變量名。2. C語言用方括號語言用方括號 表示數(shù)組元數(shù)個數(shù)。表示數(shù)組元數(shù)個數(shù)。對于 int a5;表示有表示有5個元素個元素, 元素的下標從元素的下標從0開始開始.數(shù)組a的元素分別為:a0,a1, a2, a3, a 4.6數(shù)組數(shù)組 a 在內(nèi)存中的存放順序:在內(nèi)存中的存放順序:a0的值a1
3、的值a2的值a3的值a4的值:注意:注意:在沒有給數(shù)組元素賦值以前,沒有確定的值。.7 2. 引用數(shù)組元素的方式引用數(shù)組元素的方式: 數(shù)組名數(shù)組名下標下標 1. 必須象使用變量那樣必須象使用變量那樣,先定義先定義,后使用后使用則 a 05+a1 6 為正確的算術表達式例:例:int a5;a0=1;a1=2;:例例: :一維數(shù)組的輸入與輸出。一維數(shù)組的輸入與輸出。main()main()int i,a10;int i,a10; for(i=0;i10;i+) for(i=0;i10;i+) ai=i; ai=i; for(i=0;i=9;i+) for(i=0;i=9;i+) printf(“
4、%4d”,ai); printf(“%4d”,ai); 問題?問題?將輸入數(shù)據(jù)按逆序輸出將輸入數(shù)據(jù)按逆序輸出. .例例: :一維數(shù)組的輸入與輸出。一維數(shù)組的輸入與輸出。main()main()int i,a10;int i,a10; for(i=0;i10;i+) for(i=0;i10;i+) ai=i; ai=i; for(i=0;i=9;i+) for(i=0;i0;i- -) for(i=9;i0;i- -) printf(“%d”,ai);printf(“%d”,ai);.10 對全部元素賦初值。對全部元素賦初值。如:如:int a10=10, 11, 12, 13, 14, 15,
5、 16, 17, 18, 19表示數(shù)組元素的值為:a0=10;a1=11;:a9=19;.11 對部分元素賦初值對部分元素賦初值(前面的連續(xù)元素前面的連續(xù)元素)。如: 在此, 只有前5個元素初值確定。int b10=0,1,2,3,4;表示數(shù)組元素的值為:b0=0;b1=1;b2=2;b3=3;b4=4;.12注意:注意:不能只對不連續(xù)部分元素或后面的連續(xù)元素賦初值。語句語句: int a10=, , , , ,1,2,3,4,5; int a10=1, ,3, ,5 , ,7, ,9, ,; 是錯誤的。.13 如對數(shù)組元素賦同一初值如對數(shù)組元素賦同一初值,必須一一寫出必須一一寫出: stat
6、ic int a10=2,2,2,2,2,2,2,2,2,2;不可寫成任何其他形式。 若賦全部元素的初值若賦全部元素的初值,可省略常量表達式可省略常量表達式 int a =0,1,2,3; 表示a4,即只有4個元素。.146.3 6.3 數(shù)組應用實例數(shù)組應用實例.15前面已講過:數(shù)組元素在內(nèi)存中是按順前面已講過:數(shù)組元素在內(nèi)存中是按順序連續(xù)存放的;序連續(xù)存放的;重要特性:重要特性:系統(tǒng)對超出數(shù)組元素的使用系統(tǒng)對超出數(shù)組元素的使用不查錯。不查錯。.16例:例:# include main( ) int a5=0, 1, 2, 3, 4, i;char ch5=a, b, c, d, e;for
7、(i=0; i10; i+)printf(a%d=%d, ch%d=%cn, i, ai, i, chi);printf(%s, ch);.17a0=0, ch0=aa1=1, ch1=ba2=2, ch2=ca3=3, ch3=da4=4, ch4=ea5=25185, ch5=a6=25699, ch6=a7=23909, ch7=a8= 22, ch8= a9=285, ch9=Abcde .18求Fibonacci 數(shù)列的前20項。 定義數(shù)組定義數(shù)組,并賦初值并賦初值 static int f 20=1,1; /*定義數(shù)組的前兩個元素*/注:注:c c規(guī)定只有靜態(tài)數(shù)組規(guī)定只有靜態(tài)數(shù)組s
8、taticstatic和外部存儲數(shù)組和外部存儲數(shù)組externextern才能才能進行初始化!(對于構造數(shù)據(jù)類型如數(shù)組、結構體進行進行初始化?。▽τ跇嬙鞌?shù)據(jù)類型如數(shù)組、結構體進行初始化通常定義為靜態(tài)存儲類別)初始化通常定義為靜態(tài)存儲類別)fi=fi-1+fi-2 ,且f1 = f2= 1。.19 用循環(huán)用循環(huán)for求數(shù)列的后求數(shù)列的后18項項:注意注意: 下標越界問題: i =2 且 i20for (i=2; i20; i+) f i=f i 1+f i 2;.20#include main ( ) int i; static int f 20=1, 1; for (i=2; i20; i+)
9、 f i=f i1+f i2; for (i=0; i20; i+) if (i%5 = =0) printf(n); printf(%12d,f i ); .21 1 8 89 987 5 55 6106765運行結果如下:運行結果如下: 1 13 1441597 2 21 1331584 3 34 3774181 例例: : 歌手比賽,歌手比賽,1010位評委打分,去掉最高分,最低位評委打分,去掉最高分,最低分,得成績。分,得成績。main()main()int score10,i,max=-1,min=101,sum=0;int score10,i,max=-1,min=101,sum=
10、0; float mark; float mark; for(i=0;i10;i+) for(i=0;i10;i+) printf(“please enter the score %d:”, printf(“please enter the score %d:”,i+1i+1);); scanf(“%dn”, scanf(“%dn”,&scorei&scorei);); sum=sum+scorei; sum=sum+scorei; for(i=0;i10;i+) for(i=0;imax)max=scorei; if(scoreimax)max=scorei; if(scoreimin)mi
11、n=scorei; if(scoreia1, 則交換;然后比較第二個數(shù)與第三個數(shù);依次 類推,直至第n-1個數(shù)和第n個數(shù)比較為止 第一趟冒泡排序,結果最大的數(shù)被安置在最 后一個元素位置上(2)對前n-1個數(shù)進行第二趟冒泡排序,結果使次大 的數(shù)被安置在第n-1個元素位置(3)重復上述過程,共經(jīng)過n-1趟冒泡排序后, 排序結束例例 用冒泡法對用冒泡法對10個數(shù)排序個數(shù)排序985420例例: :用冒泡法對用冒泡法對1010個數(shù)進行排序個數(shù)進行排序( (冒泡排序法冒泡排序法) )算法算法:(:(從小到大從小到大) )將兩個相鄰的數(shù)進行比較將兩個相鄰的數(shù)進行比較, ,將小的將小的數(shù)調(diào)換到前頭數(shù)調(diào)換到前頭
12、 . .895420859420854920854290854209第一趟結結果果第第5次次第第4次次第第3次次第第2次次第第1次次5842054820542805420885420第二趟結結果果第第4次次第第3次次第第2次次第第1次次main()main()int a11, i,j,t;int a11, i,j,t; printf(“input 10 number:n”); printf(“input 10 number:n”); for(i=1;i11;i+) for(i=1;i11;i+) scanf(“%d”,&ai); scanf(“%d”,&ai); printf(“n”); pr
13、intf(“n”); for(j=1;j=9;j+) for(j=1;j=9;j+) for(i=1;i=10-j;i+) for(i=1;iai+1) if(aiai+1) t=ai;ai=ai+1; t=ai;ai=ai+1; ai+1=t; ai+1=t; printf(“the sorted numbers:n”); printf(“the sorted numbers:n”); for(i=1;i11;i+) for(i=1;iai+1ftaiai+1輸出a1an.26排序過程:(1)首先通過n-1次比較,從n個數(shù)中找出最小的, 將它與 第一個數(shù)交換第一趟選擇排序,結果最小的數(shù)被安
14、置在第一個元素位置上(2)再通過n-2次比較,從剩余的n-1個數(shù)中找出關鍵字次小 的記錄,將它與第二個數(shù)交換第二趟選擇排序(3)重復上述過程,共經(jīng)過n-1趟排序后,排序結束例例 用簡單選擇法對用簡單選擇法對10個數(shù)排序個數(shù)排序例例: :用選擇法對用選擇法對1010個數(shù)進行排序。(記錄下標)個數(shù)進行排序。(記錄下標)main()main() int a10, i,j,t,k; int a10, i,j,t,k; for(i=0;i10;i+) scanf(“%d”,&ai); for(i=0;i10;i+) scanf(“%d”,&ai); printf(“n”); printf(“n”); f
15、or(i=0;i9;i+) for(i=0;ik min=k * */ / for(j=i+1;j10;j+) for(j=i+1;j10;j+) if(ajak) k=j; if(ajak) k=j; t=ak;ak=ai;ai=t; t=ak;ak=ai;ai=t; printf(“the sorted numbers:n”); printf(“the sorted numbers:n”); for(i=0;i10;i+) for(i=0;i10;i+) printf(“%4d”,ai); printf(“%4d”,ai); printf(“n”); printf(“n”); .286.4
16、 6.4 二維數(shù)組二維數(shù)組形式:形式:例例: : int a4 10; float x8 20;類型說明符類型說明符 數(shù)組名數(shù)組名常量表達式常量表達式1 常量表達式常量表達式2.292. 可將二維數(shù)組的元素看成為若干個特殊可將二維數(shù)組的元素看成為若干個特殊的一維數(shù)組。的一維數(shù)組。 可看成:可看成:有三個特殊的一維數(shù)組b0,b1, b2,每一個又有四個元素:1. 不可將定義寫為不可將定義寫為int a4,10。注意:注意:b00, b01, b02, b03,b10, b11, b12, b13,b20, b21, b22, b23,如如: int b3 4;.303. 二維數(shù)組的存放方式為二維
17、數(shù)組的存放方式為: 按行優(yōu)先按行優(yōu)先。由此可。由此可推廣推廣 至三維、至三維、n維數(shù)組的定義和存放。維數(shù)組的定義和存放。4. 初始化初始化:即即: 最右邊的下標變化最快。 按行給二維數(shù)組賦初值按行給二維數(shù)組賦初值:static int a34=1,2,3,4, 5,6,7,8, 9,10,11,12;或:或:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;.31 可以對部分元素賦初值可以對部分元素賦初值,但需表達清楚。但需表達清楚。則相當于若:若: static int a34=1,2,3,8則相當于000000008321000800030021如如: s
18、tatic int a34=1,2,3,8。.32 可通過賦初值決定數(shù)組大小。如為二維可通過賦初值決定數(shù)組大小。如為二維,則只可省略第一維的大小。則只可省略第一維的大小。static int a 4=1,2,3,12;.33形式形式: :其中的下標為整型表達式其中的下標為整型表達式, ,但不得越界。但不得越界。與一維數(shù)組元素一樣與一維數(shù)組元素一樣, ,二維數(shù)組元素相當于同類二維數(shù)組元素相當于同類型的簡單變量。型的簡單變量。注意下標值應在已定義的數(shù)組大小范圍內(nèi);注意下標值應在已定義的數(shù)組大小范圍內(nèi);如:如:int a23;int a23;則則a23=3a23=3的引用是的引用是不合法不合法的。的
19、。請區(qū)分定義數(shù)組請區(qū)分定義數(shù)組a23a23和引用元素和引用元素a23a23的不同。的不同。數(shù)組名數(shù)組名下標下標1下標下標2.34 a=1 2 34 5 6b=1 42 5 3 6例例: : 將一個二維數(shù)組行和列元素互換,存到另一個二維數(shù)組中。例如:例如:例例: :將一個二維數(shù)組的行列互換存放到另一個數(shù)組中將一個二維數(shù)組的行列互換存放到另一個數(shù)組中. .即即: : 1 21 23 3 4 54 56 6main()main() static int a23=1,2,3,4,5,6; static int a23=1,2,3,4,5,6; static int b32,i,j; static in
20、t b32,i,j; printf(“array a:n”); printf(“array a:n”); for(i=0;i=1;i+) for(i=0;i=1;i+) for(j=0;j=2;j+) for(j=0;j=2;j+) printf(“%5d”,aij); printf(“%5d”,aij);bji=aijbji=aij; ; printf(“n”); printf(“n”); printf(“array b:n”); printf(“array b:n”); for(i=0;i=2;i+) for(i=0;i=2;i+) for(j=0;j=1;j+) for(j=0;jmax
21、ftmax=aijrow=icolum=j輸出max,row,colum#include #include main()main() int i,j,row=0,colum=0,max; int i,j,row=0,colum=0,max; static int a34=1,2,3,4, static int a34=1,2,3,4, 9,8,7,6,-10,-10,-5,2; 9,8,7,6,-10,-10,-5,2; max=a00; max=a00; for(i=0;i=2;i+) for(i=0;i=2;i+) for(j=0;j=3;j+) for(j=0;jmax) if (aij
22、max) max=aij;row=i;colum=j; max=aij;row=i;colum=j;printf(“max=%d,row=%d,colum=%dn”,max,row,coluprintf(“max=%d,row=%d,colum=%dn”,max,row,colum);m); .38注意:注意: 數(shù)組元素數(shù)據(jù)的輸入必須以循環(huán)方式數(shù)組元素數(shù)據(jù)的輸入必須以循環(huán)方式進行或者定義時置初值。進行或者定義時置初值。 二維數(shù)組一般用二重循環(huán)對每個元素二維數(shù)組一般用二重循環(huán)對每個元素賦值。賦值。 .39二維數(shù)組與一維數(shù)組的對應關系:二維數(shù)組與一維數(shù)組的對應關系:6A00A01A02A03A10
23、A11A12A13A20A21A22A2349 13 138734122A0A1A2A3A4A5A6A7A8A9A10A11字符數(shù)組的定義字符數(shù)組的定義字符數(shù)組的初始化與賦值字符數(shù)組的初始化與賦值字符數(shù)組的輸入與輸出字符數(shù)組的輸入與輸出字符串處理函數(shù)字符串處理函數(shù)字符數(shù)組的應用舉例字符數(shù)組的應用舉例1 1、字符數(shù)組的定義方法與前面其他類型的數(shù)組的定義相同、字符數(shù)組的定義方法與前面其他類型的數(shù)組的定義相同. .數(shù)組類型數(shù)組類型 數(shù)組名數(shù)組名 元素個數(shù)元素個數(shù) 例如例如: :(1 1)char string5=“ABCD”;char string5=“ABCD”;(2 2)char c10;cha
24、r c10; c0=I;c1= ;c2=a;c3=m; c0=I;c1= ;c2=a;c3=m; c4= ;c5=h;c6=a;c7=p; c4= ;c5=h;c6=a;c7=p; c8=p;c9=y; c8=p;c9=y;c0 c1 c2 c3 c4 c5 c6 c7 c8 c9c0 c1 c2 c3 c4 c5 c6 c7 c8 c92 2、要點:、要點:數(shù)組類型:必須是數(shù)組類型:必須是charchar型。型。元素個數(shù):為實際字符個數(shù)元素個數(shù):為實際字符個數(shù)+1,+1,放結束標志放結束標志Iamhappy字符數(shù)組的定義字符數(shù)組的定義A B C D 0字符串的結束標志字符串的結束標志“0”1
25、 1、字符串的結束標志:字符串的結束標志:“0”0”:ASCIIASCII碼值為碼值為0 0的字符。的字符。在程序中判斷字符串是否結束不再是依據(jù)字符數(shù)組的長在程序中判斷字符串是否結束不再是依據(jù)字符數(shù)組的長度而是查找字符串的結束標志度而是查找字符串的結束標志“0”.0”.2 2、例:、例:char string=“abcdef”char string=“abcdef”char char string=a,b,c,d,e,fstring=a,b,c,d,e,f字符數(shù)組的初始化字符數(shù)組的初始化1 1、將字符逐一送入字符數(shù)組中、將字符逐一送入字符數(shù)組中, ,例如例如: :static char sta
26、tic char c10=I, ,a,m,h,a,p,p,y;c10=I, ,a,m,h,a,p,p,y;要點:要點:在給字符數(shù)組賦初值時初值的個數(shù)不能超過字符數(shù)的長度在給字符數(shù)組賦初值時初值的個數(shù)不能超過字符數(shù)的長度, ,若初值字符的個數(shù)小于數(shù)組的長度時若初值字符的個數(shù)小于數(shù)組的長度時, ,字符與數(shù)組前面的元字符與數(shù)組前面的元素對應素對應, ,其余的元素自動賦值其余的元素自動賦值00(空字符)。(空字符)。字符數(shù)組的大小也可以省略。如字符數(shù)組的大小也可以省略。如: :static char c=static char c=b b, ,o o, ,o o, ,k k;請區(qū)別字符數(shù)組與字符串的不
27、同請區(qū)別字符數(shù)組與字符串的不同2 2、對一批字符的描述對一批字符的描述3 3、字符數(shù)組的賦值字符數(shù)組的賦值4 4、例例對一批字符的描述對一批字符的描述1 1、方法:采用二維數(shù)組來描述,數(shù)組的第一維為字、方法:采用二維數(shù)組來描述,數(shù)組的第一維為字符串的個數(shù),第二維的元素個數(shù)為字符串符串的個數(shù),第二維的元素個數(shù)為字符串中最長字符個數(shù)中最長字符個數(shù)+1+1。2 2、例:、例:char menu320+1=“1-Openfile”,char menu320+1=“1-Openfile”, “2-Closefile”, “2-Closefile”, “3-Exit to DOS” “3-Exit to
28、DOS”static char diamond55=static char diamond55= “ “ * *”,”, ” ” * * * *”,”, ” ”* * * *”,”, ” ” * * * *”,”, ” ” * *”字符數(shù)組的賦值字符數(shù)組的賦值1 1、在、在c c語言中對字符串賦初值可以寫成語言中對字符串賦初值可以寫成: :static char c=“I am happy”; static char c=“I am happy”; 或或static char c=“I am happy”static char c=“I am happy”; 這里字符數(shù)組的長度不是這里字符數(shù)組
29、的長度不是10,10,而是而是1111。2 2、將一個字符串賦值給一個字符數(shù)組、將一個字符串賦值給一個字符數(shù)組, ,只能用在賦只能用在賦初值的情況下初值的情況下, ,不能用在賦值語句中不能用在賦值語句中. .例如例如: :char str11;char str11;str=“I am happy”;str=“I am happy”; 是是錯誤錯誤的的. .46v字符串及其結束標志l無字符串變量,用字符數(shù)組處理字符串無字符串變量,用字符數(shù)組處理字符串l字符串結束標志字符串結束標志:0例 “hello”共5個字符,在內(nèi)存占6個字節(jié) 字符串長度5 h e l l o 0104 101 108 108
30、 111 0內(nèi)存存放字符ASCII碼字符串字符串例例: :字符數(shù)組元素的引用。字符數(shù)組元素的引用。main()main() static char static char c10=I,a,m,h,a,p,c10=I,a,m,h,a,p,p,y;p,y; int i; int i; for(i=0;i10;i+) for(i=0;i10;i+) printf(“%c”,ci); printf(“%c”,ci); printf(“n”); printf(“n”); 運行結果:運行結果:I am happyI am happy試試 char c10=“I am happy”char c10=“I a
31、m happy”例例: :輸出一個鉆石圖形。輸出一個鉆石圖形。main()main() static char diamond55static char diamond55 = = , ,* *, , ,* *, , ,* *,* *, , , , , , ,* *, , ,* *, , ,* *, , , , ,* *; int i,j; int i,j; for(i=0;i5;i+) for(i=0;i5;i+) for(j=0;j5;j+) for(j=0;j5;j+) printf(“%c”,diamondij);printf(“n”); printf(“%c”,diamondij);
32、printf(“n”);運行結果:運行結果: * * * * * * * * * * * * * * * *字符串的輸入與輸出字符串的輸入與輸出一、逐個字符的輸入與輸出一、逐個字符的輸入與輸出用格式符用格式符“%c”%c”輸入或輸出一個字符。輸入或輸出一個字符。二、將整個字符串一次輸入或輸出,用二、將整個字符串一次輸入或輸出,用“%s”%s”。如:如:static char c =“china”static char c =“china”; printf(“%s”,c)printf(“%s”,c);三、要點:三、要點:輸出字符不包括結束符輸出字符不包括結束符“0”.0”.用用“% %s”s”時
33、,時,printfprintf中輸出項是字符數(shù)組名,而不是元素名。中輸出項是字符數(shù)組名,而不是元素名。 printfprintf(“%s”,c0) (“%s”,c0) 錯錯若數(shù)組長度大于字符串實際長度,也只輸出到若數(shù)組長度大于字符串實際長度,也只輸出到00結束。結束。 char c10=“China”;char c10=“China”;printfprintf(“%s”,c); (“%s”,c); 結果:結果:ChinaChina若一個字符數(shù)組中包含一個以上的若一個字符數(shù)組中包含一個以上的00,則遇到第一個,則遇到第一個00時時就結束輸出。就結束輸出。字符串的輸入與輸出字符串的輸入與輸出1.1
34、.用用“%c”%c”格式輸出單個字符格式輸出單個字符. .例如例如: :static char str =“book”;static char str =“book”;for(i=0;i4;i+)for(i=0;istr2.(2)str1str2.函數(shù)值為正數(shù)函數(shù)值為正數(shù)(3)str1str2.(3)str1str2.函數(shù)值為負數(shù)函數(shù)值為負數(shù)6.strlen(str)6.strlen(str)功能功能: :測量字符數(shù)組的長度測量字符數(shù)組的長度, ,不包括不包括“0”.0”.7.strwr(str)7.strwr(str)功能功能: :將大寫字母轉換為小寫字母將大寫字母轉換為小寫字母. .8.s
35、trupr(str)8.strupr(str)功能功能: :將小寫字母轉換為大寫字母將小寫字母轉換為大寫字母. .例:當執(zhí)行下面的程序且輸入例:當執(zhí)行下面的程序且輸入ABCABC時時, ,輸出結果為輸出結果為: :#include #include main()main() char ss10=“12345”; char ss10=“12345”; strcat(ss,”6789”); strcat(ss,”6789”); 運行結果:運行結果: ABC ABC gets(ss); gets(ss); printf(“%s”,ss); printf(“%s”,ss); .55例 gets函數(shù)和s
36、trcmp函數(shù)的應用。 #include main() char pass_str80; /*定義字符數(shù)組passstr*/ int i=0; /*檢驗密碼*/ while(1) clrscr(); printf(請輸入密碼n); gets(pass_str); /*輸入密碼*/ if(strcmp(pass_str,“password”)!=0) /*口令錯*/ printf(口令錯誤,按任意鍵繼續(xù)); else break; /*輸入正確的密碼,中止循環(huán)*/ getch(); i+; if(i=3) exit(0); /*輸入三次錯誤的密碼,退出程序*/ /*輸入正確密碼所進入的程序段*/
37、例例: :程序程序main()main() char ch10; char ch10; scanf(“%s”,ch); scanf(“%s”,ch); printf(“%s”,ch); printf(“%s”,ch); 執(zhí)行時執(zhí)行時, ,若從鍵盤輸入若從鍵盤輸入Good Morning,Good Morning,則輸出為則輸出為: : A.Good Morning B.Good A.Good Morning B.Good C. Good Morni C. Good Morni D.Good Morn D.Good Morn b b.57 H o w 0 a r e 0 y o u ? 0 #i
38、nclude 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);運行情況:輸入:How are you?輸出:a=How b=are c=you?輸入:How are you?輸出:a=Howscanf中%s輸入時,遇空格或回車結束運行情況:輸入:How are you?例例 字符串輸入舉例字符串輸入舉例例例: :程序程序main()main() char ch10; char ch10; gets(ch); gets(ch); prin
39、tf(“%s”,ch); printf(“%s”,ch); 執(zhí)行時執(zhí)行時, ,若從鍵盤輸入若從鍵盤輸入Good Morning,Good Morning,則輸出為則輸出為: : A.Good Morning B.Good A.Good Morning B.Good C. Good Morni C. Good Morni D.Good Morn D.Good Morn a a.59main() int i; char a5; scanf(%s,a); for(i=0;i5;i+) printf(%d,ai);運行情況:(1)若輸入 hel , 正常(2)若輸入 hell , 正常(3)若輸入 h
40、ello , 用%s 輸出時,會出現(xiàn)問題 h e l 0 h e l l 0 h e l l o輸入字符串長度數(shù)組維數(shù)例子.60包含在頭文件 string.hu字符串輸出函數(shù)puts格式:puts(字符數(shù)組)功能:向顯示器輸出字符串(輸出完,換行)說明:字符數(shù)組必須以0結束u字符串輸入函數(shù)gets格式:gets(字符數(shù)組)功能:從鍵盤輸入一以回車結束的字符串放入字符數(shù)組中, 并自動加0說明:輸入串長度應小于字符數(shù)組維數(shù)常用的字符串處理函數(shù)常用的字符串處理函數(shù).61包含在頭文件 string.h例 #include main( ) char string80; printf(“Input a s
41、tring:”); gets(string); puts(string); 輸入: How are you?輸出: How are you ? 常用的字符串處理函數(shù)常用的字符串處理函數(shù).62u字符串連接函數(shù)strcat格式:strcat(字符數(shù)組1,字符數(shù)組2)功能:把字符數(shù)組2連到字符數(shù)組1后面返值:返回字符數(shù)組1的首地址說明:字符數(shù)組1必須足夠大 連接前,兩串均以0結束;連接后,串1的0取消, 新串最后加0u字符串拷貝函數(shù)strcpy格式:strcpy(字符數(shù)組1,字符串2)功能:將字符串2,拷貝到字符數(shù)組1中去返值:返回字符數(shù)組1的首地址說明:字符數(shù)組1必須足夠大 拷貝時0一同拷貝 不能
42、使用賦值語句為一個字符數(shù)組賦值例 char str120,str220; str1=“Hello!”; () str2=str1; ()常用的字符串處理函數(shù)(常用的字符串處理函數(shù)(1).63u字符串比較函數(shù)strcmp格式:strcmp(字符串1,字符串2)功能:比較兩個字符串比較規(guī)則:對兩串從左向右逐個字符比較(ASCII碼), 直到遇到不同字符或0為止返值:返回int型整數(shù),a. 若字符串1 字符串2, 返回正整數(shù) c. 若字符串1= 字符串2, 返回零說明:字符串比較不能用“=”,必須用strcmpu字符串長度函數(shù)strlen格式:strlen(字符數(shù)組)功能:計算字符串長度返值:返回字
43、符串實際長度,不包括0在內(nèi)例 對于以下字符串,strlen(s)的值為:(1)char s10=A,0,B,C,0,D;(2)char s =“tv0willn”;(3)char s =“x69082n”; 答案:1 3 1常用的字符串處理函數(shù)(常用的字符串處理函數(shù)(2).64#include #include main() char str1 = ”Hello!, str2 = ”How are you?”,str20; int len1,len2,len3; len1=strlen(str1); len2=strlen(str2); if(strcmp(str1, str2)0) strc
44、py(str,str1); strcat(str,str2); else if (strcmp(str1, str2)0) strcpy(str,str2); strcat(str,str1); else strcpy(str,str1); len3=strlen(str); puts(str); printf(”Len1=%d,Len2=%d,Len3=%dn”,len1,len2,len3);How are you?Hello!Len1=6,Len2=12,Len3=18例 strcmp與strlen舉例.65例題.66例例: :有一個一維數(shù)組,內(nèi)放有一個一維數(shù)組,內(nèi)放1010個學生成績,
45、寫一個函數(shù),求出平均個學生成績,寫一個函數(shù),求出平均分、最高分和最低分。分、最高分和最低分。float max=0,min=0; main()float max=0,min=0; main()float average(array,n) float ave,score10;float average(array,n) float ave,score10;float array ;int n; int i;float array ;int n; int i;int i; for(i=0;i10;i+)int i; for(i=0;i10;i+) float aver,sum=array0; sc
46、anf(“%f”,&scorei); float aver,sum=array0; scanf(“%f”,&scorei); max=min=array0; ave=average(score,10); max=min=array0; ave=average(score,10); for(i=0;in;i+) for(i=0;imax) max=arrayi; max,min,ave); if(arrayimax) max=arrayi; max,min,ave); else if (arrayimin) min=arrayi; else if (arrayimin) min=arrayi;
47、sum=sum+arrayi; sum=sum+arrayi; aver=sum/n; aver=sum/n;return(aver);return(aver);.67 二維數(shù)組應用舉例 【例例】給矩陣a賦值,并輸出該矩陣的值。 main( ) int a33= 1,2,3,4,5,6,7,8,9,i,j; for(i=0;i3;i+) for(j=0;j3;j+) printf(%5d,aij); printf(n); 該程序的運行結果如下: 1 2 3 4 5 6 7 8 9.68 字符串應用舉例 【例例】下面程序的功能是:將字符數(shù)組a中下標值為偶數(shù)的元素從小到大排列,其它元素不變。 #i
48、nclude #include main( ) char a =”clanguage”,t; int i, j, k; k=strlen(a);.69 for(i=0;i=k-2;i+=2) for(j=i+2;jaj) t=ai; ai=aj; aj=t; puts(a); printf(“n”); 運行結果為:alancuegg。 .70作業(yè):.71例:汽車固定速度前進,里程表為一對稱數(shù)95859, 兩小時后里程表又為一新對稱數(shù) 。求車速及新對稱數(shù) main() int t,j,a5; long int i,temp,k; for(i=95859+1;i+) temp=i;k=10000;
49、 for(t=0;t5;t+) at=temp/k; temp=temp%k; k=k/10; if(a0=a4)&(a1=a3) for(j=0;j5;j+) printf(“%d”,aj); printf(“New Velocity is: %dn”,(i-95859)/2); break; .72作業(yè):有4個學生,每人3門課。已知各課成績,求每門課的平均成績和每個學生的平均成績。 Cour1 cour2 cour3 stud1 78 86 92 stud2 62 73 65 stud3 90 93 95 stud4 82 73 85.73作業(yè):將一個數(shù)組中的值按逆序重新存放。 例: 原序
50、:8,6,5,4,1 改為:1,4,5,6,8 .74Main() int i,j; float sum,stud_ave4,cour_ave3; static float score43=78,86,92,62,73,65,90,93,95, 82,73,86 ; for( i=0;i=3;i+) sum=0.0; for(j=0;j=2;j+) sum=sum+scoreij; stud_avei=sum/3;printf(“average %d is: %6.2fn”,i+1,stud_avei); for(j=0;j=2;j+) sum=0.0; for( i=0;i=3;i+) su
51、m=sum+scoreij; cour_avej=sum/4; printf(“acerage course %d is: %6.2fn”,j+1,cour_avej); 作業(yè):有4個學生,每人3門課。已知各課成績,求每門課的平均成績和每個學生的平均成績。 .75作業(yè):將一個數(shù)組中的值按逆序重新存放。 例: 原序:8,6,5,4,1 改為:1,4,5,6,8 main() int n=5,I, temp; static int a5=8,6,5,4,1 for(i=0;in/2;i+) temp=ai; ai=an-i-1; an-i-1=temp; for(I=0;in;i+) printf
52、(“%4d”,ai);例例: :分析下面的程序分析下面的程序, ,寫出結果寫出結果. .main()main() int n33,i,j; int n33,i,j; for(i=0;i3;i+) for(i=0;i3;i+) for(j=0;j3;j+) for(j=0;j3;j+)nij=i+j;nij=i+j; for(i=0;i2;i+) for(i=0;i2;i+) for(j=0;j2;j+) for(j=0;j2;j+)ni+1j+1+=nij;ni+1j+1+=nij; printf(“%dn”,nij); printf(“%dn”,nij); 運行結果為:運行結果為:6 6例例: :分析下面的程序分析下面的程序, ,寫出結果寫出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學語文教學提高學生閱讀理解能力的路徑研討
- 企業(yè)支付貨款合同范例
- 減水劑運輸合同范例
- oem藥品合同范例
- 共同制作招牌合同范例
- 分期抵押車合同范例
- 中醫(yī)門診加盟合同范例
- 房屋壓頂施工方案范本
- 倉儲信息咨詢合同范例
- 樂隊商演合同范例
- 《鐵路軌道維護》課件-單根更換混凝土枕作業(yè)
- 軟件開發(fā)行業(yè)安全風險管理方案
- 檢修車間安全風險辨識管控
- 金價走勢分析
- 《青少年抑郁癥的人際心理治療》黃滿麗
- 2022部編版道德與法治四年級下冊《我們的好朋友》教學設計
- 2024年談心談話記錄范文
- 心肺復蘇術課件2024新版
- 經(jīng)濟法學學習通超星期末考試答案章節(jié)答案2024年
- 道法滋養(yǎng)心靈+課件- 2024-2025學年統(tǒng)編版道德與法治七年級上冊
- 醫(yī)院培訓課件:《嚴重創(chuàng)傷快速轉診機制》
評論
0/150
提交評論