c語(yǔ)言程序設(shè)計(jì) 課件 第6章 數(shù)組_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì) 課件 第6章 數(shù)組_第2頁(yè)
c語(yǔ)言程序設(shè)計(jì) 課件 第6章 數(shù)組_第3頁(yè)
c語(yǔ)言程序設(shè)計(jì) 課件 第6章 數(shù)組_第4頁(yè)
c語(yǔ)言程序設(shè)計(jì) 課件 第6章 數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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)介

第六章數(shù)組一維數(shù)組二維數(shù)組及多維數(shù)組字符數(shù)組和字符串?dāng)?shù)組概念數(shù)組概念構(gòu)造數(shù)據(jù)類型之一數(shù)組:有序數(shù)據(jù)的集合,用數(shù)組名標(biāo)識(shí)元素:屬同一數(shù)據(jù)類型,用數(shù)組名和下標(biāo)確定一維數(shù)組的定義定義方式:數(shù)據(jù)類型數(shù)組名[常量表達(dá)式];

合法標(biāo)識(shí)符表示元素個(gè)數(shù)下標(biāo)從0開(kāi)始[]:數(shù)組運(yùn)算符單目運(yùn)算符優(yōu)先級(jí)(1)左結(jié)合不能用()例

inta[6];a[0]0145a[1]a[2]a[3]a[4]a[5]23a編譯時(shí)分配連續(xù)內(nèi)存內(nèi)存字節(jié)數(shù)=數(shù)組維數(shù)*

sizeof(元素?cái)?shù)據(jù)類型)數(shù)組名表示內(nèi)存首地址,是地址常量6.1

一維數(shù)組

數(shù)組必須先定義,后使用只能逐個(gè)引用數(shù)組元素,不能一次引用整個(gè)數(shù)組數(shù)組元素表示形式:數(shù)組名[下標(biāo)]其中:下標(biāo)可以是常量或整型表達(dá)式例inti=15;

intdata[i];(不能用變量定義數(shù)組維數(shù))例inta[10];

printf(“%d”,a);()必須for(j=0;j<10;j++)

printf(“%d\t”,a[j]);()例intdata[5];data[5]=10;//C語(yǔ)言對(duì)數(shù)組不作越界檢查,使用時(shí)要注意一維數(shù)組的引用初始化方式在定義數(shù)組時(shí),為數(shù)組元素賦初值(在編譯階段使之得到初值)

inta[5]={1,2,3,4,5};等價(jià)于:a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;說(shuō)明:數(shù)組不初始化,其元素值為隨機(jī)數(shù)對(duì)static數(shù)組元素不賦初值,系統(tǒng)會(huì)自動(dòng)賦以0值當(dāng)全部數(shù)組元素賦初值時(shí),可不指定數(shù)組長(zhǎng)度如inta[5]={6,2,3};

等價(jià)于:a[0]=6;a[1]=2;a[2]=3;a[3]=0;a[4]=0;如inta[3]={6,2,3,5,1};()staticinta[5];等價(jià)于:a[0]=0;a[1]=0;a[2]=0;a[3]=0;a[4]=0;只給部分?jǐn)?shù)組元素賦初值

inta[]={1,2,3,4,5,6};編譯系統(tǒng)根據(jù)初值個(gè)數(shù)確定數(shù)組維數(shù)一維數(shù)組的初始化排序過(guò)程:(1)比較第一個(gè)數(shù)與第二個(gè)數(shù),若為逆序a[0]>a[1],則交換;然后比較第二個(gè)數(shù)與第三個(gè)數(shù);依次類推,直至第n-1個(gè)數(shù)和第

n個(gè)數(shù)比較為止——第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個(gè)元素位置上(2)對(duì)前n-1個(gè)數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個(gè)元素位置(3)重復(fù)上述過(guò)程,共經(jīng)過(guò)n-1趟冒泡排序后,排序結(jié)束例用冒泡法對(duì)10個(gè)數(shù)排序例3849657613273097第一趟38496513273076第二趟384913273065第三趟3813273049第四趟13273038第五趟132730第六趟4938659776132730初始關(guān)鍵字n=8384976971397972730971376767627301365276530651313494930492738273830381327第七趟例用冒泡法對(duì)10個(gè)數(shù)排序(圖解)排序過(guò)程:(1)首先通過(guò)n-1次比較,從n個(gè)數(shù)中找出最小的,將它與第一個(gè)數(shù)交換—第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個(gè)元素位置上(2)再通過(guò)n-2次比較,從剩余的n-1個(gè)數(shù)中找出關(guān)鍵字次小的記錄,將它與第二個(gè)數(shù)交換—第二趟選擇排序(3)重復(fù)上述過(guò)程,共經(jīng)過(guò)n-1趟排序后,排序結(jié)束例用簡(jiǎn)單選擇法對(duì)10個(gè)數(shù)排序例初始:[49386597761327]kji=11349一趟:13[386597764927]i=22738二趟:1327[6597764938]三趟:132738[97764965]四趟:13273849[769765]五趟:1327384965[9776]六趟:132738496576[97]kkkkjjjjjjjjjj例用簡(jiǎn)單選擇法對(duì)10個(gè)數(shù)排序二維數(shù)組的定義定義方式:

數(shù)據(jù)類型數(shù)組名[常量表達(dá)式][常量表達(dá)式];數(shù)組元素的存放順序原因:內(nèi)存是一維的二維數(shù)組:按行序優(yōu)先多維數(shù)組:最右下標(biāo)變化最快例inta[3][4];floatb[2][5];

intc[2][3][4];

inta[3,4];()行數(shù)列數(shù)元素個(gè)數(shù)=行數(shù)*列數(shù)inta[3][2]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]014523a[0][0]a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]intc[2][3][4]01234567………...20212223c[0][0][0]c[0][0][1]c[0][0][2]c[0][0][3]c[0][1][0]c[0][1][1]c[0][1][2]c[0][1][3]c[0][2][0]c[0][2][1]c[0][2][2]c[0][2][3]c[1][0][0]c[1][0][1]c[1][0][2]c[1][0][3]c[1][1][0]c[1][1][1]c[1][1][2]c[1][1][3]c[1][2][0]c[1][2][1]c[1][2][2]c[1][2][3]6.2二維數(shù)組及多維數(shù)組例inta[3][4];20161720181920202120222320089201011201213201415200012002320045200067a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]每個(gè)元素a[i]由包含4個(gè)元素的一維數(shù)組組成二維數(shù)組a是由3個(gè)元素組成a[0]a[1]a[2]行名014523a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[0][0]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]a[1][2]67101189a[0]a[1]a[2]二維數(shù)組理解形式:數(shù)組名[下標(biāo)][下標(biāo)]二維數(shù)組元素的初始化分行初始化:例inta[2][3]={{1,2,3},{4,5,6}};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456全部初始化按元素排列順序初始化例inta[2][3]={{1,2},{4}};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]120400部分初始化例inta[][3]={{1},{4,5}};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]100450第一維長(zhǎng)度省略初始化例inta[2][3]={1,2,3,4,5,6};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456全部初始化例inta[2][3]={1,2,4};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]124000部分初始化例inta[][3]={1,2,3,4,5};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123450第一維長(zhǎng)度省略初始化二維數(shù)組元素的引用例將二維數(shù)組行列元素互換,存到另一個(gè)數(shù)組中a=123456b=142536#include<stdio.h>main(){inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

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");}}程序舉例max=a[0][0]fori=0to2forj=0to3a[i][j]>max真假max=a[i][j]row=icolum=j輸出:max和row,colum#include<stdio.h>main(){inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

inti,j,row=0,colum=0,max;

max=a[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;

colum=j; }

printf("max=%d,row=%d,\colum=%d\n",max,row,colum);}例求二維數(shù)組中最大元素值及其行列號(hào)

字符數(shù)組定義字符數(shù)組的初始化逐個(gè)字符賦值用字符串常量字符數(shù)組的引用例charc[10],ch[3][4];例charch[5]={‘H’,’e’,’l’,’l’,’o’};ch[0]Hello逐個(gè)字符賦值ch[1]ch[2]ch[3]ch[4]有問(wèn)題!例charch[5]={‘H’,’e’,’l’,’l’,’o’};ch[0]Hello逐個(gè)字符賦值ch[1]ch[2]ch[3]ch[4]例charch[5]={‘B’,’o’,’y’};ch[0]Boy\0\0逐個(gè)字符賦值ch[1]ch[2]ch[3]ch[4]例charch[5]=“Boy”;ch[0]Boy\0\0用字符串常量ch[1]ch[2]ch[3]ch[4]例charch[6]={“Hello”};charch[6]=“Hello”;charch[]=“Hello”;用字符串常量ch[0]Helloch[1]ch[2]ch[3]ch[4]\0ch[5]6.3

字符數(shù)組和字符串例chardiamond[][5]={{'.','.','*'},{'.','*','.','*'}, {'*','.','.','.','*'},{'.','*','.','*'},{'.','.','*'}};二維字符數(shù)組初始化..*\0\0.*.*\0*...*.*.*\0..*\0\0diamond[0]diamond[1]diamond[2]diamond[3]diamond[4]例

charfruit[][7]={“Apple”,”O(jiān)range”,”Grape”,”Pear”,”Peach”};二維字符數(shù)組初始化fruit[0]fruit[1]fruit[2]fruit[3]fruit[4]Apple\0\0Orange\0Grape\0\0Pear\0\0\0Peach\0\0例子字符串及其結(jié)束標(biāo)志無(wú)字符串變量,用字符數(shù)組處理字符串字符串結(jié)束標(biāo)志:‘\0’例“hello”共5個(gè)字符,在內(nèi)存占6個(gè)字節(jié)字符串長(zhǎng)度5

hello\01041011081081110內(nèi)存存放字符ASCII碼字符串逐個(gè)字符I/O:%c整個(gè)字符串I/O:%s例用%cmain(){charstr[5];

inti;for(i=0;i<5;i++)

scanf(“%c”,&str[i]);for(i=0;i<5;i++)

printf(“%c”,str[i]);}例用%smain(){charstr[5];

scanf(“%s”,str);

printf(“%s”,str);}用字符數(shù)組名,不要加&輸入串長(zhǎng)度<數(shù)組維數(shù)遇空格或回車結(jié)束自動(dòng)加‘\0’用字符數(shù)組名,遇‘\0’結(jié)束字符串的輸入輸出

main(){

inti;chara[5];

scanf("%s",a);for(i=0;i<5;i++)

printf("%d,",a[i]);}運(yùn)行情況:(1)若輸入hel,正常(2)若輸入hell,正常(3)若輸入hello,用%s輸出時(shí),會(huì)出現(xiàn)問(wèn)題

hel\0

hell\0

hello輸入字符串長(zhǎng)度<數(shù)組維數(shù)例子

How\0

are\0

you?\0

#include<stdio.h>main(){chara[15],b[5],c[5];

scanf("%s%s%s",a,b,c);

printf("a=%s\nb=%s\nc=%s\n",a,b,c);

scanf("%s",a);

printf("a=%s\n",a);}運(yùn)行情況:輸入:Howareyou?輸出:a=Howb=arec=you?輸入:Howareyou?輸出:a=Howscanf中%s輸入時(shí),遇空格或回車結(jié)束運(yùn)行情況:輸入:Howareyou?例字符串輸入舉例包含在頭文件string.h字符串輸出函數(shù)puts格式:puts(字符數(shù)組)功能:向顯示器輸出字符串(輸出完,換行)說(shuō)明:字符數(shù)組必須以‘\0’結(jié)束字符串輸入函數(shù)gets格式:gets(字符數(shù)組)功能:從鍵盤輸入一以回車結(jié)束的字符串放入字符數(shù)組中,并自動(dòng)加‘\0’說(shuō)明:輸入串長(zhǎng)度應(yīng)小于字符數(shù)組維數(shù)例#include<stdio.h>main(){charstring[80];

printf(“Inputastring:”);gets(string);puts(string);}輸入:Howareyou?輸出:Howareyou?

常用的字符串處理函數(shù)

字符串連接函數(shù)strcat格式:strcat(字符數(shù)組1,字符數(shù)組2)功能:把字符數(shù)組2連到字符數(shù)組1后面返值:返回字符數(shù)組1的首地址說(shuō)明:字符數(shù)組1必須足夠大

連接前,兩串均以‘\0’結(jié)束;連接后,串1的‘\0’取消,

新串最后加‘\0’字符串拷貝函數(shù)strcpy格式:strcpy(字符數(shù)組1,字符串2)功能:將字符串2,拷貝到字符數(shù)組1中去返值:返回字符數(shù)組1的首地址說(shuō)明:字符數(shù)組1必須足夠大

拷貝時(shí)‘\0’一同拷貝

不能使用賦值語(yǔ)句為一個(gè)字符數(shù)組賦值例charstr1[20],str2[20];str1={“Hello!”};()str2=str1;()常用的字符串處理函數(shù)(1)字符串比較函數(shù)strcmp格式:strcmp(字符串1,字符串2)功能:比較兩個(gè)字符串比較規(guī)則:對(duì)兩串從左向右逐個(gè)字符比較(ASCII碼),直到遇到不同字符或‘\0’為止返值:返回int型整數(shù),a.若字符串1<

字符串2,返回負(fù)整數(shù)

b.若字符串1>

字符串2,返回正整數(shù)

c.若字符串1==字符串2,返回零說(shuō)明:字符串比較不能用“==”,必須用strcmp字符串長(zhǎng)度函數(shù)strlen格式:strlen(字符數(shù)組)功能:計(jì)算字符串長(zhǎng)度返值:返回字符串實(shí)際長(zhǎng)度,不包括‘\0’在內(nèi)例對(duì)于以下字符串,strlen(s)的值為:(1)chars[10]={‘A’,‘\0’,‘B’,‘C’,‘\0’,‘D’};(2)chars[]=“\t\v\\\0will\n”;(3)chars[]=“\x69\082\n”;答案:131常用的字符串處理函數(shù)(2)#include<string.h>#include<stdio.h>main(){charstr1[]=”Hello!",str2[]=”Howareyou?”,str[20];

intlen1,len2,len3;

len1=strlen(str1);len2=strlen(str2);

if(strcmp(str1,str2)>0){strcpy(str,str1);strcat(str,str2);}

elseif(strcmp(str1,str2)<0){strcpy(str,str2);strcat(str,str1);}elsestrcpy(str,str1);len3=strlen(str);

puts(str);printf(”Len1=%d,Len2=%d,Len3=%d\n”,len1,len2,len3);}Howareyou?Hello!Len1=6,Len2=12,Len3=18Ch6_23.c例strcmp與strlen舉例

例輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞輸入一字符串給stringi=0num=0word=0當(dāng)((c=string[i])!=‘\0’)c=空格真真假假word=0word=1num=num+1i=i+1輸出:numwo

溫馨提示

  • 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)論