《大學課件組數(shù)》PPT課件_第1頁
《大學課件組數(shù)》PPT課件_第2頁
《大學課件組數(shù)》PPT課件_第3頁
《大學課件組數(shù)》PPT課件_第4頁
《大學課件組數(shù)》PPT課件_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、例題:輸入一個任意位數(shù)整數(shù),求出每位上的數(shù)字,從高位向低位輸出,*若由低位向高位輸出:*/ #include stdio.h #include conio.h void main() long x; textmode(C40); clrscr(); printf(input an interger:); scanf(%ld,將求出的每一位數(shù)字輸出,變量,多個,數(shù)組,保存,http:/,第六章 數(shù)組,本章重點,1、一維數(shù)組、二維數(shù)組的定義、初始化以及數(shù)組元素的引用,2、字符串以及字符串數(shù)組,3、字符串處理函數(shù),本章難點,1、數(shù)組名是整個數(shù)組的首地址,2、直接引用和間接引用,http:/,主要內(nèi)容

2、,第一節(jié) 一維數(shù)組的定義和引用,第二節(jié) 字符數(shù)組,第三節(jié) 二維數(shù)組的定義和引用,http:/,引言,構(gòu)造類型:由基本類型的數(shù)據(jù)按照一定的規(guī)則組合而成,C語言中的構(gòu)造類型,數(shù)組,結(jié)構(gòu)體,共用體,本章內(nèi)容,第十章內(nèi)容,數(shù)組,一組變量,具有相同的數(shù)據(jù)類型,在內(nèi)存中占有連續(xù)的內(nèi)存單元,具有相同的名稱(數(shù)組名),但有不同的下標,每一個稱為一個數(shù)組元素,用統(tǒng)一的數(shù)組名稱和不同的下標來唯一的標識數(shù)組中的每一個元素,唯一確定數(shù)組元素在數(shù)組中的順序的整數(shù)值,http:/,6.1 一維數(shù)組的定義和引用,一維數(shù)組:數(shù)組中的每個元素只帶有一個下標,即僅 由一個下標值就能確定數(shù)組元素位置和順 序的數(shù)組,因此,在邏輯上,

3、可以把一維數(shù)組中的所有 元素看作是排成一行的,所以也把一維數(shù)組 稱為“行數(shù)組,http:/,一、定義,形式,類型名,數(shù)組名,常量表達式,注:1)類型名:數(shù)組中的元素的類型(如 int char 等,2)數(shù)組名的命名規(guī)則同前面的變量的命名規(guī)則,3)常量表達式:表示數(shù)組中數(shù)組元素的個數(shù),即數(shù)組的 長度,不允許為變量,既不允許對數(shù)組做動態(tài)定義。數(shù)組的大小一旦定義即已固定,例如:定義一個包含3個元素的整型數(shù)組a,int,例如:定義一個包含20個元素的字符型數(shù)組c,char c20,3,a,例:int a3,b5,c10,一個定義中,可以同時說明多個相同類型的數(shù)組,例:char c,s30,普通變量和數(shù)

4、組可以出現(xiàn)在同一個定義中,http:/,注: 4)數(shù)組名: 是一個地址常量,代表整個數(shù)組的首地址,變量的地址:一個變量所占內(nèi)存中第一個字節(jié)的地址,2000H,2001H,2002H,2003H,2004H,int x,x,printf(“%x,輸出結(jié)果為:2000,一個變量名與一個地址值所標明的存儲區(qū)域相對應,http:/,注: 4)數(shù)組名:是一個地址常量,代表整個數(shù)組的首地址,例如:int a3,3000H,3001H,3002H,3003H,3004H,3005H,3006H,數(shù)組a所占的內(nèi)存,printf(“%x”,a,輸出結(jié)果為:3000,a的值,a+1的值是多少,3002,注:對地址

5、進行增減運算,移動的最小單位是一個存儲單元而不一定是一個字節(jié),具體由數(shù)組元素的類型決定,http:/,例如,main()int a10; printf(“%x”,a); printf(“%x”,a+9);,如果第一個輸出語句的結(jié)果為194, 則第二個輸出語句的結(jié)果為(,1 9 4,1 8,2 1 2,十六進制,十進制,X,X,1 9 4,1 2,2 0 6,X,1 a 6,1 a 6,http:/,二、引用,補充內(nèi)容:直接引用和間接引用,直接引用:通過變量名來對內(nèi)存單元進行存取操作的,此前我們對變量的操作都是直接引用,int x,x,x=3,3,printf(“%d”,x,輸出3,http:/

6、,間接引用,將變量(假設(shè)為i)的地址存放在另一個變量(假設(shè)為p)中,要存取變量i的值,可以先找到存放i地址的變量p,從p中取出i的地址,然后根據(jù)這個地址進行存放。這種由一個變量得到另一個變量的地址,再通過得到的這個地址完成對存儲單元訪問的方法,成為對內(nèi)存的“間接訪問”,或者“間接引用,int i=3,3,變量p的空間,2000H,http:/,與間接引用相關(guān)的運算符,:取某個變量的地址,例如取變量x的地址,x,:間接引用運算符,單目運算符。出現(xiàn)在運算對象的左邊, 其運算對象是地址或者存放地址的指針變量,功能:引用相應的存儲單元,對變量x的引用,直接引用,x,間接引用,p,x,第九章內(nèi)容,htt

7、p:/,下標的范圍: 下標,數(shù)組元素的引用:把數(shù)組中的每個元素當成普通的變量來使用,就是所謂的“數(shù)組元素的引用,兩種方法,1、直接引用,形式:數(shù)組名稱下標表達式,表達式的值必須為整數(shù),例如:int a3,該數(shù)組中包含3個元素,分別為,2)數(shù)組元素默認的下標值從0開始,a0、a1、a2,注: 1)下標表達式必須為整型常量或者整型的表達式,0,長度-1,3)數(shù)組不能整體引用。 如 不能用a表示a0到a23個元素,http:/,+0,2、間接引用,形式:*數(shù)組元素的地址,例如:int a3,表示數(shù)組中的第一個元素,直接引用,a0,間接引用,a,表示數(shù)組中的第二個元素,直接引用,a1,間接引用,a+1

8、,表示數(shù)組中的第三個元素,直接引用,a2,間接引用,a+2,http:/,課程回顧,1、定義一個具有10個元素的浮點型的數(shù)組f,應使用的語句為:,float f10,2、若已有定義int a10;則該數(shù)組中 首元素表示為: 。 未元素表示為:,a0,a9,3、若有一個數(shù)組a,則對其下標為i的元素,地址表示為: 或,數(shù)組元素的引用表示為: 或,ai,a+i,ai,a+i,http:/,main()int a10;,例題,給10個元素分別賦值為0 1 2 3 49,a0=0,a1=1,a2=2,a9=9,i,i,ai=i,for(i=0;i10;i,ai=i,輸出數(shù)組的10個元素,printf(“

9、% 3d”,a0,1,2,9,i,for(i=0;i10;i,printf(“% 3d”,ai,倒序輸出數(shù)組的10個元素,for(i=9;i=0;i,printf(“% 3d”,ai,http:/,三、一維數(shù)組的初始化,1、定義時賦初值,例:int a3=1,2,3,注:初值列表用大括號括起來,各數(shù)值間用逗號隔開。從第一個元素開始依次賦值,例:int a=1,2,3,注:只給部分元素賦值,且為從第個元素開始的連續(xù)的數(shù)組元素,沒有賦值的元素自動取值為,上例中,賦值后元素a0、a1、a2的值分別為、;a3、a4的值均為0,3)例:int a=1,2,3,注:對全部數(shù)組元素賦初值時,長度可以省略。系

10、統(tǒng)根據(jù)初值的個數(shù)自動決定數(shù)組的長度,http:/,4)初值的個數(shù)與數(shù)組的長度不同時,長度不可以省略,初值個數(shù)(n)長度(L):沒賦值的元素自動取值為0,初值個數(shù)(n)=長度(L):長度可以省略,初值個數(shù)(n)長度(L):編譯時出錯,int a3=1,2,3,4,X,http:/,2、運行時賦值(一般使用循環(huán)結(jié)構(gòu),1)用賦值符號,例如:int a10,例如:int a10,給10個元素賦值0到100之間的隨機數(shù),for(i=0;i10;i,ai,random(101,2)用輸入函數(shù),輸入10個數(shù)分別給10個元素賦值,for(i=0;i10;i,scanf(“%d”,ai,或者:a+i,http:

11、/,例題:輸入一個任意位數(shù)整數(shù),求出每位上的數(shù)字,從高位向低位輸出,*若由高位向底位輸出:*/ #include stdio.h void main() long x; clrscr(); printf(input an interger:); scanf(%ld,*用一個數(shù)組來保存每一位上的數(shù)字*,int a20,n,x%10,an,n=0,n,*輸出a數(shù)組中的數(shù)據(jù)*,printf(“%d,”,ai,for(,i=n-1,i=0,i,chp6interger.c,http:/,如果分別用max,min,aver表示3個成績,則該如果定義,答:普通變量,例題1:輸入10名同學的成績,統(tǒng)計其中的

12、最高分、最低分和平均分,include void main(),如何存儲,答:數(shù)組,如果成績?yōu)楦↑c型數(shù)據(jù),該數(shù)組如果定義,float score10,float max,min,aver,http:/,max=score0; for(i=1;imax) max=scorei,void main()float score10; float max,min,aver ;,如何輸入10個成績,for(i=0;i10;i,scanf(“%f”, ),scorei,int i,如何求最高分,將其保存在max中,如何求最高分,將其保存在min中,min=score0; for(i=1;i10;i+) if

13、(scoreimin) min=scorei,如何求平均分,并保存在aver中,sum,sum=score0; for(i=1;i10;i+) sum=sum+scorei,aver=sum/10,printf(最高分:%.1f,最低分:%.1f,平均分:%.1fn”,max,min,aver,如何將結(jié)果輸出,http:/,如何求最高分,將其保存在max中,max=score0,if(score1max,max=score1,if(score2max,max=score2,if(score3max,max=score3,if(score9max,max=score9,if(scorei max

14、,max=scorei,for(i=1;i10;i,min,min,min,min,低,http:/,如何求總分,將其保存在sum中,sum=score0,sum=sum+score1,sum=sum+score2,sum=sum+score3,sum=sum+score9,for(i=1;i10;i,sum=sum+scorei,http:/,練習:找出數(shù)組a5中的最大值并輸出,include “stdio.h” void main(),定義一個具有5個元素的整型數(shù)組a,int a5,max,i,輸入5個整數(shù)分別給數(shù)組的5個元素賦值,for(i=0;i5;i+) scanf(“%d,求5個元

15、素中的最大值,max=a0,if(maxa i,max=ai,for(i=1;i5;i,輸出最大元素的值,printf(“max is%dn”,max,求5個元素中的最大值,http:/,include “stdio.h” void main()int a5,i,max ; for(i=0;i5;i+) scanf(“%d”,練習:找出數(shù)組a5中的最大元素的下標并輸出,0,amax,i,如何將最大的元素放在最后位置,將下標為max的元素和最后元素交換,t,t=amax,amax =a4,a4= t,引申作業(yè): 用選擇法對10個整數(shù)進行升序排序,http:/,*max1.c*/ #include

16、 stdio.h void main() int a5,max,i; for(i=0;i5;i+) scanf(%d,輸出最大元素的值,將最大的元素放在數(shù)組的最后,a4,將數(shù)組中的元素按由小到大排序,下一頁,http:/,*max1.c*/ #include stdio.h void main() int a5,max,i; for(i=0;i5;i+) scanf(%d,輸出最大元素的值,將最大的元素放在數(shù)組的最后,for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t;,a4,將數(shù)組中的元素按由小到大排序,下一頁,http:/,8 4 9 5 0,假設(shè)數(shù)組元素的值分別賦值

17、為:a5=9,8,4,5,0,2,9 8 4 5 0,第一次,8 9 4 5 0,第二次,第三次,8 4 5 9 0,第四次,8 4 5 0 9,結(jié)果:把最大的數(shù)放到最后一個元素,if(,ai,ai+1,t=ai,ai=ai+1,ai+1=ai,*交換ai和ai+1的值*,for(i=0;i4;i,上一頁,http:/,*將5個元素中的最大值放在最后*/ for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t;,*將4個元素中的最大值放在最后*/ for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t;,3,*將3個元素中的最大值放在最后*/ for(i=0

18、;iai+1) t=ai; ai=ai+1; ai+1=t;,*將2個元素中的最大值放在最后*/ for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t;,*將5個元素按降序排序*,for(,j=1,j5,j,5-j,起泡法排序,http:/,起泡法排序:與起泡從水中往上冒的情況有些類似,具體做法:先將第一個數(shù)a0與第2個數(shù)a1進行比較,如果a0a1,則將兩個數(shù)進行交換,否則保持原順序不變。然后比較a1和a2,依此類推,直到第n-1個元素與第n個元素比較,這稱為一趟起泡。這一趟最明顯的效果是將最大的數(shù)據(jù)排到了最后。然后對前n-1個數(shù)據(jù)進行同樣的操作,則具有次大值的數(shù)被排在第n

19、-1的位置上,重復以上操作直到所有元素按順序排列,http:/,*起泡法排序 chp6sort.c*/ main() int i,j,a5=9,8,4,5,0,2,t; clrscr(); for(i=0;iaj+1) t=aj; aj=aj+1; aj+1=t; for(i=0;i5;i+) printf(%d ,ai);,http:/,練習:編程模擬23選5的抽獎系統(tǒng)。(select.c,http:/,8 4 9 5 0 2,假設(shè)已有定義:a6=9,8,4,5,0,2,第一趟,9 8 4 5 0 2,第一次,8 9 4 5 0 2,第二次,第三次,8 4 5 9 0 2,第四次,8 4 5

20、 0 9 2,第五次,8 4 5 0 2 9,for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=aj,結(jié)果:把最大的數(shù)放到最后一個元素,http:/,第二趟,8 4 5 0 2,第一次,4 8 5 0 2,第二次,4 5 8 0 2,第三次,4 5 0 8 2,第四次,4 5 0 2 8,結(jié)果:把次大的數(shù)放到倒數(shù)第二個元素,for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=aj,http:/,第三趟,4 5 0 2,第一次,4 5 0 2,第二次,4 0 5 2,第三次,4 0 2 5,for(j=0;jaj+1) t=aj; aj=aj+1; aj+1

21、=aj,第四趟,4 0 2,第一次,0 4 2,第二次,0 2 4,for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=aj,第五趟,0 2,第一次,0 2,for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=aj,http:/,main()int i,j,a6=9,8,4,5,0,2;,for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=aj,for(i=1;i6;i,6-i,for(i=0;i6;i+) printf(“%d “,ai,*外層循環(huán)控制趟數(shù)*,*內(nèi)層循環(huán)控制每趟的比較*,練習:編程模擬23選5的抽獎系統(tǒng)。(lx1.c,ht

22、tp:/,課程回顧,1、一維數(shù)組的初始化,2、一維數(shù)組中元素的引用方式和地址表示,3、兩種排序方法:冒泡法和選擇法,http:/,6.2字符數(shù)組,C本身沒有字符串變量,字符串的存儲完全依賴于字符數(shù)組,但字符數(shù)組并不完全等價于字符串,字符數(shù)組:用來存放字符數(shù)據(jù)的數(shù)組。字符數(shù)組中的 一個元素存放一個字符,一、定義,char 數(shù)組名長度,例如:char c5=c,h,i,n,a,在內(nèi)存中占5個字節(jié),a0,a1,a2,a3,a4,c,h,i,n,a,這種定義方式正誤,int c5=c,h,i,n,a,http:/,二、初始化和引用,方法同前面所講的一維數(shù)組,三、字符串和字符串結(jié)束標志,字符串借助于字符

23、型的一維數(shù)組來存放,并規(guī)定以0作為結(jié)束標志,0 :轉(zhuǎn)義字符,稱為“空值”。其ASCII碼值為0. 占內(nèi)存空間,但不計入字符串的長度,字符串長度:字符串結(jié)束標志之前的有效字符的個數(shù),字符串常量:系統(tǒng)在末尾自動加0,例如:“ABC” 的長度為3,在內(nèi)存中占4個字節(jié)的空間,http:/,每個字符串常量都分別占用內(nèi)存中一串連續(xù)的存儲空間。返回給系統(tǒng)的是字符串所占內(nèi)存的首地址,http:/,字符數(shù)組與字符串的區(qū)別,字符數(shù)組的每個元素可存放一個字符,但并不限定最后一個字符是什么,在C中,有關(guān)字符串的很多操作都與字符串的結(jié)束標志有關(guān),因此,在字符數(shù)組中的有效字符后加一個0這一特定的情況下,可把這種一維數(shù)組稱

24、作“字符串,可以說,字符串是字符數(shù)組的一種具體應用,例如:char s=A,B,C,例如:char s=A,B,C,0; 都是正確的,1、一般賦值方式:在定義時逐個元素賦值,例如1)char s4=A,B,C,0,2)char s=A,B,C,0,3)char s10=A,B,C,0,這四種方式有何異同,4)char s=A,B,C,http:/,2、直接用字符串常量賦值,例如:char s=“abc,也可以省略大括號: char s=“abc,最常使用的方式,http:/,四、字符串的輸入輸出,1、輸出,若有定義:char c=“string,1)printf()函數(shù),逐個字符輸出:格式符

25、%c,輸出整個字符串:格式符 %s,i=0; while( ) printf(“%c”,ci); i,格式:printf(格式控制,輸出的起始地址,例如1):printf(“%s”, c,結(jié)果為,string,printf(“%s”, c+2,結(jié)果為,ring,c,c+2,ci!=0,http:/,例如4):char c1=“boy”,c2=“girl,則:printf(“%s”,c1,printf(“%s”,c2,輸出結(jié)果為,boygirl,則:printf(“%sn”,c1,boy girl,例如2):printf(“%s”,”china”,結(jié)果為,china,printf(“%.2s”,

26、”china”,結(jié)果為,ch,printf(“%.2s”,”china”+2,結(jié)果為,in,printf(“%s”,”china”+2,結(jié)果為,ina,例如3):char c=a,b,c,printf(“%s”,c,結(jié)果為,不確定,http:/,2)puts()函數(shù),格式:puts(輸出的起始地址,若有定義:char c=“string,puts(c,結(jié)果為,string,puts(c+2,結(jié)果為,ring,例如:char c1=“boy”,c2=“girl,puts(c2,輸出結(jié)果為,則:puts(c1,boy girl,注:puts函數(shù)自動將字符串結(jié)束標志0轉(zhuǎn)為n輸出,即該函數(shù)具有自動回車

27、換行的功能,http:/,1、輸入,若有定義:char c20,1)scanf()函數(shù),逐個字符輸入:格式符 %c,接收整個字符串:格式符 %s,格式:scanf(格式控制,接收字符的起始地址,i=0; do scanf(“%c,例如:scanf(“%s”,c,若在程序運行中輸入:china,則從第一個元素開始存放字符,例如:scanf(“%s”,c+1,若在程序運行中輸入:china,則從第二個元素開始存放字符,ci!=n,如果數(shù)組中存儲一個“字符串”,而且當遇回車符結(jié)束輸入,應怎樣表示條件,i19,http:/,若在程序中輸入:boy and gilr,然后puts(c) ; 該語句的輸出

28、結(jié)果為,boy,注:空格、回車符都作為輸入數(shù)據(jù)的分隔符而不能被讀入,2)gets()函數(shù),格式:gets(接收字符的起始地址,例如:gets(c,注:輸入字符串以回車作為結(jié)束??崭?、制表符都作為 有效數(shù)據(jù)接收,自動將回車轉(zhuǎn)為結(jié)束標記0,注:使用以上函數(shù)需要在函數(shù)首加頭文件:stdio.h,http:/,如有:char s20; gets(s); puts(s); 如果在程序執(zhí)行時輸入:boy and girl ,則輸出結(jié)果為,boy and girl,http:/,課程回顧,1、以下語句把字符串”abcde”賦初值給字符數(shù)組,不正確的語句是( ) A.Char s=“abcde”; B.cha

29、r s=“abcde”; C.char s=a,b,c,d,e,0; D.char s5=“abcde,D,2、以下對C語言字符數(shù)組的錯誤描述是( ) A.字符數(shù)組可以存放字符串 B.字符數(shù)組中的字符串可以整體輸入輸出 C.可以在賦值語句中通過賦值運算符=對字符數(shù)組整體賦值 D.字符數(shù)組中字符串的結(jié)束標志是0,C,http:/,3、有n各數(shù)分別存放在數(shù)組a0an-1中。下面程序段的功能是從a數(shù)組中查找值為y的元素;若找到,則輸出該元素的下標值,找不到則輸出-1.其中k為整型變量。 k=n-1; while(k=0,4、以下程序段在w數(shù)組中插入一元素x,w數(shù)組中的已經(jīng)按由小到大順序存放,插入前數(shù)

30、組中有n個元素。要求插入x后數(shù)組中的數(shù)句仍然有序(由小到大存放)。 int w15=1,2,3,6,9,15,n=6,x=8,i,p=0; while(xwp) p+; /*找出插入位置*/ for(i=n;ip;i-) wi= ; =x; n+; /*插入后元素個數(shù)加1*,wi-1,wi,ak!=y,http:/,五、字符串處理函數(shù),以下函數(shù)均使用頭文件“string.h,1、求字符串長度 strlen(,格式:strlen(str,地址值或者字符串常量,注:1)功能:求從地址str開始到結(jié)束標志0之前 的字符的個數(shù),2)函數(shù)的返回值為一整數(shù),例:1)strlen(“china”)的值為,5

31、,2)strlen(“ATSn0121”)的值為,8,3)strlen(“sn0160end”)的值為,3,4)strlen(“t085xffn”)的值為,2,http:/,5)若有 char s10=“china”; 則 strlen(s)的值為,5,http:/,例題:以下程序功能是將s1字符串的內(nèi)容復制到s2字符串中,請?zhí)羁?copy.c) #include #include void main() char s1=good luck!,s220; int i; for(i=0; ;i+) puts(s1); puts(s2);,i=strlen(s1,s2i=s1i,引申作業(yè):編程完成

32、字符串的鏈接功能。如 char s120=“good”, ,s2=“l(fā)uck!”; 編程將s2鏈接到s1后面,使s1內(nèi)容為“good luck,http:/,2、字符串的復制 strcpy(,格式: strcpy(str1,str2,說明:1)功能:將str2代表的字符串復制到從str1地址開始的 內(nèi)存單元中,2)str1有足夠的空間,3)strncpy(str1,str2,n) 只復制str2中的前n個字符,例:若有char s120,s2=“china,1)strcpy(s1,s2); puts(s1,輸出: china,2)strcpy(s1,s2+2); puts(s1,輸出: ina

33、,3)strncpy(s1,s2,3); puts(s1,輸出: chi,4)strncpy(s1,s2+2,2); s22=0; puts(s1,輸出: in,http:/,5)若有char s120=“abc”,s2=“def,strcpy(s1+3,s2); puts(s1,輸出:abcdef,strcpy(s1+strlen(s1),s2); puts(s1,輸出:abcdef,注:字符串的復制不能使用賦值運算符“=”,只能使用復制函數(shù),3、字符串的連接 strcat(,格式: strcat(str1,str2,說明:1)功能:將str2代表的字符串連接到從str1代表的字符 串從0開

34、始的位置后面,2)str1有足夠的空間,以容納合并后的內(nèi)容,例如:若有char s120=“abc”,s2=“def,strcat(s1,s2); puts(s1,輸出:abcdef,http:/,4、字符串的比較 strcmp(,格式: strcmp(str1,str2,說明:1)功能:將str1、str2代表的兩個字符串從指定位置開 始逐個字符相比較(按ASCII碼值),直到出現(xiàn)不同的 字符或遇到0為止,例如,2)函數(shù)的返回值,s1,s2,str1 大于str2 返回值:正數(shù),str1 小于str2 返回值:負數(shù),str1 等于str2 返回值:0,3)字符串的比較不能使用關(guān)系運算符,只能

35、使用比較函數(shù),http:/,strcmp(s1,s2,例題:輸入兩個字符串,輸出相應的大小信息,main() char s120,s220; int n;,輸入字符串給s1,gets(s1,輸入字符串給s2,gets(s2,比較str1和str2,n,if(n0) printf(“s1 is bigger than s2!n”,else if(n0) printf(“s1 is smaller than s2!n”,else printf(“s1 is equal to s2!n”,include “stdio.h,include “string.h,http:/,作業(yè)1:輸入若干字符串,直到

36、輸入空串為止,從中選出最大的字符串輸出。(lt3.c,5、大小寫字母轉(zhuǎn)換函數(shù),將字符串中的大寫字母轉(zhuǎn)換成對應的小寫字母:strlwr(str,將字符串中的小寫字母轉(zhuǎn)換成對應的大寫字母:strupr(str,例如:若有 char c=“China” 則,strlwr(c) 結(jié)果為,china,strupr(c) 結(jié)果為,CHINA,作業(yè)2:編寫程序完成十六進制數(shù)到十進制數(shù)的轉(zhuǎn)化,例如:輸入1a2 則輸出十進制數(shù):418,分析:因為十六進制數(shù)包含0-9的數(shù)字,還包含a-f或者A-F的字母,所以可以把輸入的十六進制數(shù)作為一個字符串來接收,將其保存到一個字符數(shù)組中。(lt4.c,http:/,6.3二

37、維數(shù)組的定義和引用,二維數(shù)組:每個元素帶有兩個下標,在邏輯上可以把二維數(shù)組看成是一個具有若干行和列的表格或者矩陣,一、定義,類型名稱,數(shù)組名稱,常量表達式1,常量表達式2,二維數(shù)組的行數(shù),二維數(shù)組的列數(shù),例如:定義一個具有2行3列的整型數(shù)組a,int a23,分析:1)數(shù)組名稱 :a,2)共有2 x 3=6個元素,3)邏輯結(jié)構(gòu)如下,http:/,第1行,第2行,第1列,第2列,第3列,a00,a01,a02,a10,a11,a12,int a23,注:每個元素有兩個下標: 第1個方括號中的下標代表行號,稱為行下標 第2個方括號中的下標代表列號,稱為列下標,http:/,二、存儲方式,按行存放,

38、即在內(nèi)存中先存放第1行的元素,再存放第二行的元素,在c語言中,可以把一個二維數(shù)組先看成一個一維數(shù)組,數(shù)組中每個元素又是包含若個元素的一維數(shù)組,例如: int a23,a,a0,a1,3,a00,a01,a02,3,a10,a11,a02,所以,二維數(shù)組名稱和第一維的下標代表一個不可變的地址常量,其值分別為每行的第一個元素的地址,二維數(shù)組名稱也是一個地址常量,代表整個數(shù)組的首地址,http:/,所以,若有 int a23; 則數(shù)組中6個元素的存儲方式為,a00,a01,a02,a10,a11,a12,3000H,3004H,3008H,300cH,3010H,3014H,a的值,a0的值,a1的

39、值,思考:a0+1的值,思考:元素a12的地址怎么表示,思考:a+1的值為多少,元素a01的地址,a1+2,*(a+1)+1的值,如果表示任意元素的地址,ai+j,或者*(a+i)+j,http:/,由以上分析可以得出,ai : 表示第i行的首地址,每加1相當于加1列,也稱為列地址,a : 表示整個數(shù)組的首地址,每加1相當于加1行,也稱為行地址,將行地址前加引用運算符即可將行地址轉(zhuǎn)化為列地址。 *(行地址)列地址,http:/,三、引用,1、直接引用,數(shù)組名稱行下標列下標,例如前例中的a11等,注:1)下標為整型表達式,而且不能越界,2)兩個下標分別放在方括號中,例如:a1,2 是錯誤的,2、

40、間接引用,數(shù)組元素的地址,例如若有int s34,則引用第2行第3列的元素方法為,直接引用,a12,間接引用,a1+2) 或者,+2,a+1,http:/,a00,a00,例題:程序運行時給數(shù)組元素賦值,并輸出各數(shù)組元素。(lt5.c,main() int a23,i,j;,給各個元素賦值,scanf(“%d”,只給a00元素賦值,只給第1行元素賦值,for(j=0;j3;j,j,for(j=0;j3;j+) scanf(“%d”,或者ai+j 或者 *(a+i)+j,按行輸出各個元素賦值,只輸出a00元素,printf(“%d “,只輸出第0行元素,for(j=0;j3;j,j,for(i=

41、0;i2;i+) for(j=0;j3;j+) printf(“%d ”, aij,或者*(ai+j ) 或者 *(*(a+i)+j,printf(“n”,i,for(i=0;i2;i,http:/,四、初始化 :可以在定義的同時給數(shù)組元素賦值,1、分行賦值,每行放在一個花括號中。也可省略行數(shù),列數(shù) 不可省,例如:1)int a23=1,2,3,4,5,6,結(jié)果,a,2 3 4 5 6,2)int a23=1,2,4,5,結(jié)果,a,2 0 4 5 0,注:沒有被賦值的元素自動取值為0,3)int a3=1,2,4,5,結(jié)果,a,2 0 4 5 0,注:行數(shù)自動計算為2,http:/,2、將所有初值放在一個花括號中,按次序依次賦值給數(shù)組元素。 行數(shù)可以省略,但列數(shù)不能省,例如:1)int a23=1,2,3, 4,5,6,結(jié)果,a,2 3 4 5 6,2)int a23=1,2, 4,5,結(jié)果,a,2 4 5 0 0,3)int a3=1,2,3,4,5,6,結(jié)果,a,2 3 4 5 6,4)int a3=1,2, 4,5,結(jié)果,a,2 4 5 0 0,h

溫馨提示

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

評論

0/150

提交評論