C語(yǔ)言程序設(shè)計(jì):第六章 數(shù)組_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì):第六章 數(shù)組_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì):第六章 數(shù)組_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì):第六章 數(shù)組_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì):第六章 數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C程序設(shè)計(jì)

第六章數(shù)組本章的重點(diǎn)數(shù)組的概念數(shù)組的定義和引用數(shù)組元素在內(nèi)存中的排列情況字符數(shù)組和字符串的概念字符串的操作數(shù)組的概念數(shù)組:相同類型數(shù)據(jù)的、有序數(shù)據(jù)的集合。是構(gòu)造類型。特點(diǎn):數(shù)組中所有數(shù)據(jù)類型相同。具有相同的變量名。每個(gè)元素有一個(gè)唯一的下標(biāo)。用下標(biāo)訪問(wèn)元素。6.1一維數(shù)組的定義和引用定義:類型數(shù)組名[常量];例如:

intgrade[100];符合標(biāo)識(shí)符的規(guī)定一定是方括號(hào)“[]”必須是常量、常量表達(dá)式、符號(hào)常量。不能是變量。如intn;scanf(“%d”,&n);intd[n];下標(biāo)從0開始:grade[0],grade[1],grade[2],……,grade[99]數(shù)組的引用:格式:數(shù)組名[下標(biāo)]例如(ex6-1):main(){inti,a[10];for(i=0;1<10;i++)a[i]=i;for(i=0;i<10;i++)printf(“%d“,a[i]);}定義一個(gè)10個(gè)元素、名字為a的int型數(shù)組。引用定義好的數(shù)組:可以對(duì)數(shù)組元素進(jìn)行賦值可以引用某個(gè)數(shù)組元素的值下標(biāo)可以是:整型的變量、常量、表達(dá)式,如

a[i*3]、a[3*2]、……但不能超出有效范圍。下標(biāo)越界的處理C編譯系統(tǒng)對(duì)下標(biāo)越界不做判斷,不報(bào)錯(cuò)!編程人員要慎重對(duì)待。如果越界,由于使用的是數(shù)組以外的某一存儲(chǔ)單元,會(huì)產(chǎn)生不可預(yù)料的錯(cuò)誤!一維數(shù)組初始化在定義賦初值

staticintk[10]={1,2,3,4,5,6,7,8,9,10};可以給一部分元素賦初值

staticintk[10]={1,2,3,4,5};可以全部元素初始化為0staticintk[10]={0,0,0,0,0,0,0,0,0,0};staticintk[10];可以不指定數(shù)組長(zhǎng)度:

staticintk[]={1,2,3,4,5,6,7};結(jié)果:k[0]=1,k[1]=2,k[2]=3,k[3]=4,k[4]=5,k[5]=0,k[6]=0,k[7]=0,k[8]=0,k[9]=0結(jié)果:k[0]=0,k[1]=0,k[2]=0,k[3]=0,k[4]=0,k[5]=0,k[6]=0,k[7]=0,k[8]=0,k[9]=0結(jié)果:定義7個(gè)元素的數(shù)組k[0]=1,k[1]=2,k[2]=3,k[3]=4,k[4]=5,k[5]=0,k[6]=7靜態(tài)存儲(chǔ)數(shù)組才能初始化舉例:例6.2Fibonacci數(shù)列。main(){inti;staticintf[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)printf(“\n”);printf(“%12d”,f[i]);}定義一個(gè)20個(gè)元素的數(shù)組把數(shù)組前兩個(gè)元素初始化為1,1。形成Fibonacci數(shù)列:1,1,2,3,5,8,13,21,34,55,……每輸出五個(gè)換一行。按每個(gè)數(shù)據(jù)占12列的寬度、右對(duì)齊的方式輸出舉例:起泡法排序:985103-1895103-1比較相鄰兩個(gè)數(shù)859103-1859103-1859310-18593-110第一輪把最大的數(shù)換到最后一個(gè)8593-1105893-1105893-1105839-110583-1910583-1910538-191053-1891053-1891035-189103-158910-1358910第二輪把最大的數(shù)換到倒數(shù)第2個(gè)第三輪把最大的數(shù)換到倒數(shù)第3個(gè)起泡法程序框圖

輸入n個(gè)數(shù),給a[1]到a[n]forj=1ton-1fori=1ton-ja[i]>a[i+1]

假t=a[i]a[i+1]=a[i]a[i]=t

輸出a[1]到a[n]main(){inta[10];inti,j,t;printf(“Inputnumbers:”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);printf(“\n”);for(j=0;j<9;j++)for(i=0;i<=9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}

printf(“Thesortedmumbers:”);for(i=0;i<10;i++)printf(“%d“,a[i]);}從鍵盤輸入10個(gè)整數(shù),并把它存放在數(shù)組a中。整個(gè)排序過(guò)程!輸出6.2二維數(shù)組定義:類型數(shù)組名[常量表達(dá)式][常量表達(dá)式]例如:floatk[4][5],h[3][4];在內(nèi)存中的排列

k[0][0]k[0][1]k[0][2]k[0][3]k[0][4]k[1][0]k[1][1]k[1][2]k[1][3]k[1][4]k[2][0]k[2][1]k[2][2]k[2][3]k[2][4]k[3][0]k[3][1]k[3][2]k[3][3]k[3][4]引用:數(shù)組名[下標(biāo)][下標(biāo)]例如:

inta[3][4],b[2][3];……a[2][3]=90;b[1][3]=a[2][3]/3;可以對(duì)數(shù)組的某個(gè)元素賦值。元素可以出現(xiàn)在表達(dá)式中。注意:數(shù)組定義中常量表達(dá)式與數(shù)組引用中的下標(biāo)的區(qū)別。二維數(shù)組的初始化分行給數(shù)組賦值:

staticinta[3][3]={{1,2,3},{3,2,5},{3,5,7}};對(duì)整個(gè)數(shù)組賦值

staticinta[3][3]={1,2,3,3,2,5,3,5,7};對(duì)部分元素賦值

staticinta[3][3]={{1,2},{5},{7}};staticintb[3][3]={{1,2},{},{7,8}};可以缺省第一維的長(zhǎng)度

staticintb[][3]={1,2,3,4,5,6,7,8,9};staticinta[][4]={{3,0,0},{},{1,10}};這時(shí)C編譯系統(tǒng)可以計(jì)算出第一維的長(zhǎng)度。例6.4把矩陣轉(zhuǎn)置。main(){staticinta[2][3]={{1,2,3},{4,5,6}};staticintb[3][2],j,i;printf("arraya:\n");for(i=0;i<=1;i++){for(j=0;j<=2;j++){printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}printf("Arrayb:\n");for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}}把數(shù)組a初始化成:123456把數(shù)組a中的i行j列賦給數(shù)組b中j行i列進(jìn)行數(shù)組轉(zhuǎn)置。例6.5求最大值main(){inti,j,row=0,column=0,max;staticinta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];思考:其他元素行嗎?0行嗎?for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;column=j;}printf("maxis%datrow%dcolumn%d\n",max,row,column);}如果找到一個(gè)比當(dāng)前保存在max中的值大的,則保存其值、所在位置。fori=0to2forj=0to3a[i][j]>max

假max=a[i][j]row=icolumn=j6.3字符數(shù)組字符數(shù)組定義:

charc[13];c[0]='I';c[1]='';c[2]='a';c[3]='m';c[4]='';c[5]='a';c[6]='s';c[7]='t';c[8]='u';c[9]='d';c[10]='e';c[11]='n';c[12]='t';Iamastudent因?yàn)樽址鎯?chǔ)的是ASCII值,字符與整數(shù)是互通的,因此也可以定義成int存儲(chǔ)字符型。字符數(shù)組的初始化在定義時(shí)用字符進(jìn)行初始化

staticcharc[13]={'I','','a','m','','a','s','t','u','d','e','n','t'};定義時(shí)初始化可以缺省數(shù)組長(zhǎng)度:

staticcharc[]={'I','','a','m','','a','s','t','u','d','e','n','t'};同樣,字符可以定義二維數(shù)組、并初始化:

staticcharpd[][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*'}};字符數(shù)組的引用例6.6main(){charcp[10];inti;for(i=0;i<10;i++)scanf("%c",&cp[i]);for(i=0;i<10;i++)printf("%c",cp[i]);printf("\n");}逐個(gè)字符輸入,輸入10個(gè)結(jié)束。逐個(gè)字符輸出。字符串和字符串結(jié)束標(biāo)志“Cprogramming”為一個(gè)字符串,C語(yǔ)言在存放字符串時(shí),在字符串結(jié)束時(shí)自動(dòng)加上一個(gè)結(jié)束符'\0',即:CProgram\0

其中,‘\0’表示空(ASCII值為0)輸出時(shí),遇到'\0'表示字符串結(jié)束。

'\0'在內(nèi)存中占一個(gè)字節(jié)。用字符串對(duì)字符數(shù)組進(jìn)行初始化staticcharc[10]={"Cprogram"};staticcharc[]={"Cprogram"};staticcharc[]="Cprogram";注意用字符串對(duì)字符數(shù)組進(jìn)行初始化與用字符直接進(jìn)行初始化的區(qū)別。用字符進(jìn)行初始化時(shí),為了和串一致,通常在后面加上'\0',如:

staticcharc[10]={'C','','p','r','o','g','r','a','m','\0'}字符數(shù)組的輸入輸出逐個(gè)輸出輸入:用格式符%c進(jìn)行逐個(gè)輸出輸入。整串輸出:用格式符%sstaticc1[]="Cprogramming";printf("%s\n",c1);輸出項(xiàng)用數(shù)組名。輸出時(shí),遇到\0認(rèn)為串結(jié)束。輸出時(shí)不含\0,它是不可顯示的字符。

整串輸入:

charc1[20];scanf("%s",c1);變量列表中,給出c1數(shù)組名,且不加&符!輸入后,系統(tǒng)自動(dòng)在輸入的串后加上\0??梢栽谝粋€(gè)scanf()中同時(shí)輸入幾個(gè)串,如:

charc1[20],c2[15],c3[10];scanf("%s%s%s",c1,c2,c3);輸入:

Howareyou?則分別把How送給c1、把a(bǔ)re送給c2、把you?送給c3。

在scanf()中,用%s輸入時(shí),用空格作分隔符。思考:中間含有空格的字符串能用scanf()輸入嗎?字符處理函數(shù):puts(str)

把字符串str的內(nèi)容顯示在顯示器上。gets(str)

從鍵盤輸入一個(gè)字符串。并存放在字符數(shù)組str中,以回車結(jié)束。strcat(str1,str2)

把串str1和str2連接起來(lái),并存放在串str1中。strcpy(str1,str2)

把串str2的內(nèi)容拷貝到str1串中,如:

staticcharstr1[10],str2[]="China";strcpy(str1,str2);

不能用str1=str2賦值;str1要足夠的空間;不夠大時(shí)會(huì)怎樣?連同‘\0’一起拷貝到str1;

可以拷貝str2中的前幾個(gè)字符,如:strcpy(str1,str2,4);tc,vc都報(bào)錯(cuò)!strcmp(str1,str2)比較兩個(gè)串中字符ASCII值的大小。如果:兩個(gè)字符串中的字符完全一致,則相等。否則,根據(jù)第一個(gè)不同來(lái)判斷字符大小。比較結(jié)果:

str1=str2返回0str1>str2返回一個(gè)正數(shù)

str1<str2返回一個(gè)負(fù)數(shù)。如:strcmp(“abcd”,”abce”)-1strcmp(“abcf”,”adcf”)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論