版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)組
數(shù)組本章主要內(nèi)容
1.數(shù)組基本概念
2.一維數(shù)組及應(yīng)用
3.二維數(shù)組及應(yīng)用
4.字符數(shù)組和字符串本章主要內(nèi)容1.數(shù)組基本概念5.1數(shù)組的概念C語言中定義普通變量就是按變量的數(shù)據(jù)類型找到相應(yīng)大小的存儲(chǔ)空間例如:
inta1,a2;floata3;chara4a1a2整型變量占兩個(gè)字節(jié)5.1數(shù)組的概念C語言中定義普通變量就是按變量
inta1,a2;floata3;chara4a1a2a3實(shí)型變量占四個(gè)字節(jié)C語言中定義普通變量就是按變量的數(shù)據(jù)類型找到相應(yīng)大小的存儲(chǔ)空間例如:5.1數(shù)組的概念inta1,a2;a1a5.1數(shù)組的概念
inta1,a2;floata3;chara4a1a2a3a4C語言中定義普通變量就是按變量的數(shù)據(jù)類型找到相應(yīng)大小的存儲(chǔ)空間例如:字符型變量占1個(gè)字節(jié)5.1數(shù)組的概念int5.1數(shù)組的概念C語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)類型及元素個(gè)數(shù)找到相應(yīng)大小的一組連續(xù)的存儲(chǔ)空間。例如:
inta[4]a[0]=2a[3]=5a[2]=3a定義了0~3共4個(gè)元素占8個(gè)字節(jié)[0][1][2][3]5.1數(shù)組的概念C語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)5.1數(shù)組的概念
inta[4]a[0]=2a[3]=5a[2]=3a2C語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)類型及元素個(gè)數(shù)找到相應(yīng)大小的一組連續(xù)的存儲(chǔ)空間。例如:5.1數(shù)組的概念int5.1數(shù)組的概念
inta[4]a[0]=2a[3]=5a[2]=3aC語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)類型及元素個(gè)數(shù)找到相應(yīng)大小的一組連續(xù)的存儲(chǔ)空間。例如:525.1數(shù)組的概念int5.1數(shù)組的概念
inta[4]a[0]=2a[3]=5a[2]=3aC語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)類型及元素個(gè)數(shù)找到相應(yīng)大小的一組連續(xù)的存儲(chǔ)空間。例如:5235.1數(shù)組的概念int5.1數(shù)組的概念1、數(shù)組是內(nèi)存中的一塊連續(xù)的存儲(chǔ)區(qū)域,該區(qū)域由若干個(gè)數(shù)據(jù)成員組成;2、每一個(gè)數(shù)據(jù)成員稱為一個(gè)數(shù)組元素,有統(tǒng)一的名字(即數(shù)組名),用元素在數(shù)組中的序號(hào)(稱為下標(biāo))來標(biāo)識(shí);3、數(shù)組可以是一維的,也可以是多維的,不管一維還是多維,各元素在內(nèi)存中都是連續(xù)存放的;4、數(shù)組的每一維下標(biāo)必須用方括號(hào)括起來;5.1數(shù)組的概念1、數(shù)組是內(nèi)存中的一塊連續(xù)的存儲(chǔ)區(qū)域,該區(qū)5.1數(shù)組的概念5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一個(gè)數(shù)組必須說明數(shù)組類型、名稱、下標(biāo)維數(shù)及每維下標(biāo)最多元素個(gè)數(shù)。例如:inta[6]5.1數(shù)組的概念5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一5.1數(shù)組的概念5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一個(gè)數(shù)組必須說明數(shù)組類型、名稱、下標(biāo)維數(shù)及每維下標(biāo)最多元素個(gè)數(shù)。例如:inta[6]數(shù)組的類型,決定數(shù)組每個(gè)元素所占的存儲(chǔ)區(qū)域大小5.1數(shù)組的概念5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一5.1數(shù)組的概念5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一個(gè)數(shù)組必須說明數(shù)組類型、名稱、下標(biāo)維數(shù)及每維下標(biāo)最多元素個(gè)數(shù)。例如:inta[6]數(shù)組的名稱,是程序中引用數(shù)組元素的依據(jù)之一5.1數(shù)組的概念5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一5.1數(shù)組的概念5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一個(gè)數(shù)組必須說明數(shù)組類型、名稱、下標(biāo)維數(shù)及每維下標(biāo)最多元素個(gè)數(shù)。例如:inta[6]數(shù)組的維說明,決定數(shù)組由幾維組成,本例為一維數(shù)組,只有一個(gè)下標(biāo)5.1數(shù)組的概念5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一個(gè)數(shù)組必須說明數(shù)組類型、名稱、下標(biāo)維數(shù)及每維下標(biāo)最多元素個(gè)數(shù)。例如:inta[6]數(shù)組的元素個(gè)數(shù),本例共定義6個(gè)元素,下標(biāo)從[0]~[5]
5.1數(shù)組的概念假設(shè)數(shù)組元素a[3]在內(nèi)存中的地址為3100,那a[0]的地址?a[5]呢?5、一維數(shù)組是指只有一個(gè)下標(biāo)的數(shù)組,定義一個(gè)數(shù)組必須說明數(shù)組6、二維數(shù)組是指有兩個(gè)下標(biāo)的數(shù)組,二維數(shù)組在邏輯上表現(xiàn)為二維表格,是若干個(gè)一維數(shù)組的集合。例如:5.1數(shù)組的概念inta[2][3]定義了一個(gè)整型二維數(shù)組,邏輯上由兩行三列共6個(gè)元素組成。元素分別為:
a[0][0]、a[0][1]、a[0][2]
a[1][0]、a[1][1]、a[1][2]6、二維數(shù)組是指有兩個(gè)下標(biāo)的數(shù)組,二維數(shù)組在邏輯上表現(xiàn)為二維6、二維數(shù)組是指有兩個(gè)下標(biāo)的數(shù)組,二維數(shù)組在邏輯上表現(xiàn)為二維表格,是若干個(gè)一維數(shù)組的集合。例如:5.1數(shù)組的概念inta[2][3]a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]a[0]a[1]假設(shè)定義數(shù)組floata[5][6],已知a[1][1]在內(nèi)存中的地址為3100,那a[2][2]的地址?a[4][5]呢?6、二維數(shù)組是指有兩個(gè)下標(biāo)的數(shù)組,二維數(shù)組在邏輯上表現(xiàn)為二維7、字符數(shù)組是用于存放字符的數(shù)組,每個(gè)元素可以存放一個(gè)字符,主要用于處理字符串。例如:5.1數(shù)組的概念chara[10]定義了一個(gè)字符型一維數(shù)組,最多可以存放10個(gè)字符。chara[10][10]定義了一個(gè)字符型二維數(shù)組,最多可以存放100個(gè)字符;一般用于存放長(zhǎng)度不超過10個(gè)字符的字符串。7、字符數(shù)組是用于存放字符的數(shù)組,每個(gè)元素可以存放一個(gè)字符,5.2一維數(shù)組及應(yīng)用5.2.1一維數(shù)組的定義(P133)與初始化(P136)5.2.2一維數(shù)組的引用與遍歷所謂遍歷,是指對(duì)數(shù)組中的所有元素掃描一遍,對(duì)于一維數(shù)組,通常用單層循環(huán)完成。例如:
1.遍歷賦值——為每個(gè)元素賦值for(i=0;i<N;i++){printf("請(qǐng)輸入第%d個(gè)元素的值:",i);scanf("%d",&a[i]);}5.2一維數(shù)組及應(yīng)用5.2.1一維數(shù)組的定義(P133)5.2一維數(shù)組及應(yīng)用5.2.2一維數(shù)組的引用與遍歷2.遍歷輸出——輸出每個(gè)元素的值printf("數(shù)組各元素的值為:");for(i=0;i<N;i++)printf("%5d",a[i]);5.2一維數(shù)組及應(yīng)用5.2.2一維數(shù)組的引用與遍歷pri5.2一維數(shù)組及應(yīng)用5.2.3一維數(shù)組應(yīng)用舉例
利用數(shù)組編程的一般步驟為:(1)定義數(shù)組;(2)為數(shù)組各元素賦值;(3)遍歷數(shù)組各元素,按要求處理;(4)輸出處理結(jié)果。5.2一維數(shù)組及應(yīng)用5.2.3一維數(shù)組應(yīng)用舉例5.2一維數(shù)組及應(yīng)用5.2.3一維數(shù)組應(yīng)用舉例1.從鍵盤輸入10個(gè)學(xué)生成績(jī),求平均分并統(tǒng)計(jì)高于平均分的人數(shù)(1)定義有10個(gè)元素的數(shù)組,求平均分就需要累加,所以還需要一個(gè)累加器,要統(tǒng)計(jì)人數(shù)還需要一個(gè)計(jì)數(shù)器,要循環(huán)遍歷數(shù)組各元素還需要循環(huán)變量;(2)通過遍歷為數(shù)組各元素賦值(3)累加各數(shù)組元素值,需要遍歷各數(shù)組元素(4)求出平均分后還要統(tǒng)計(jì)高于平均分的人數(shù),需要拿每個(gè)元素和平均分進(jìn)行比較,所以還需要遍歷各數(shù)組元素5.2一維數(shù)組及應(yīng)用5.2.3一維數(shù)組應(yīng)用舉例(1)定義5.2一維數(shù)組及應(yīng)用5.2.3一維數(shù)組應(yīng)用舉例1.從鍵盤輸入10個(gè)學(xué)生成績(jī),求平均分并統(tǒng)計(jì)高于平均分的人數(shù)(5)輸出處理結(jié)果。5.2一維數(shù)組及應(yīng)用5.2.3一維數(shù)組應(yīng)用舉例(5)輸出5.2.3一維數(shù)組應(yīng)用舉例2.隨機(jī)產(chǎn)生10個(gè)兩位整數(shù)放入一維數(shù)組,再將各數(shù)組元素按逆序存放,如a[0]與a[9]對(duì)換,a[1]與a[8]對(duì)換……;3.隨機(jī)產(chǎn)生10個(gè)兩位整數(shù)放入一維數(shù)組,找出其中最大值及其位置;5.2一維數(shù)組及應(yīng)用5.2.3一維數(shù)組應(yīng)用舉例3.隨機(jī)產(chǎn)生10個(gè)兩位整數(shù)5.2一維數(shù)組及應(yīng)用main(){inta[10],max,k,i,j;printf("原數(shù)據(jù)為:");for(i=0;i<10;i++){a[i]=rand()%90+10;printf("%5d",a[i]);}k=0;for(i=1;i<10;i++)if(a[k]<a[i])k=i;printf("\n最大值%d,在第%d位!",a[k],k);}5.2一維數(shù)組及應(yīng)用main()5.2.3一維數(shù)組應(yīng)用舉例4.對(duì)8個(gè)數(shù)按降序排序——比較交換法5.2一維數(shù)組及應(yīng)用第1趟:假設(shè)a[0]元素最大,將其和后面a[1]-a[7]各元素值進(jìn)行比較,如果有比它更大的數(shù),則交換。代碼段如下:for(j=1;i<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}5.2.3一維數(shù)組應(yīng)用舉例5.2一維數(shù)組及應(yīng)用第1趟:假5.2一維數(shù)組及應(yīng)用7192935950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]1j5.2一維數(shù)組及應(yīng)用7192935950277941代碼段5.2一維數(shù)組及應(yīng)用7192935950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]1j5.2一維數(shù)組及應(yīng)用7192935950277941代碼段5.2一維數(shù)組及應(yīng)用7192935950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]條件成立!交換!1j5.2一維數(shù)組及應(yīng)用7192935950277941代碼段5.2一維數(shù)組及應(yīng)用9271935950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]1j5.2一維數(shù)組及應(yīng)用9271935950277941代碼段5.2一維數(shù)組及應(yīng)用9271935950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]2j5.2一維數(shù)組及應(yīng)用9271935950277941代碼段5.2一維數(shù)組及應(yīng)用9271935950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]2j條件成立!交換!5.2一維數(shù)組及應(yīng)用9271935950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]2j5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]3j5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]3j條件不成立!5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]4j5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]4j條件不成立!5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]5j5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]5j條件不成立!5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]6j5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[i]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]6j條件不成立!5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]7j5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用9371925950277941代碼段如下:for(j=1;j<8;j++)if(a[0]<a[j]){t=a[0];a[0]=a[j];a[j]=t;}a[0]a[j]7j條件不成立!第一趟比較結(jié)束后,最大值被放在了a[0]位置。5.2一維數(shù)組及應(yīng)用9371925950277941代碼段5.2一維數(shù)組及應(yīng)用
第2趟是將a[0]排除在外,設(shè)a[1]是剩下的數(shù)中最大的,與后面a[2]-a[7]比較。
第3趟是將a[0]、a[1]排除在外,設(shè)a[2]是剩下的數(shù)中最大的,與后面a[3]-a[7]比較。
……
第7趟是將a[0]~a[5]排除在外,設(shè)a[6]是剩下的數(shù)中最大的,與后面的a[7]-a[7]比較。完成排序。
以此類推,若要對(duì)N個(gè)數(shù)排序,要處理的趟數(shù)是N-1。由此增加一個(gè)外循環(huán)控制趟數(shù):
for(i=0;i<n-1;i++)
完整的比較交換法排序核心程序段為:
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)if(a[i]<a[j])交換兩個(gè)元素值
5.2一維數(shù)組及應(yīng)用第2趟是將a[0]排除在外,設(shè)5.2.3一維數(shù)組應(yīng)用舉例4.對(duì)8個(gè)數(shù)按降序排序——選擇法
與比較交換法類似,只是每次比較后不馬上交換,而是只記錄極值位置,一趟比較完成后再和假想的極值交換,極大地提高了排序效率。5.2一維數(shù)組及應(yīng)用main(){inta[8],i,j,k,t;printf("排序前數(shù)據(jù)為:");for(i=0;i<8;i++){a[i]=rand()%90+10;printf("%5d",a[i]);}for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}printf("\n排序后數(shù)據(jù)為:");for(i=0;i<8;i++)printf("%5d",a[i]);}5.2.3一維數(shù)組應(yīng)用舉例5.2一維數(shù)組及應(yīng)用main(5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941i5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ki5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941kij5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj因?yàn)闂l件不成立,所以K位置不變5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj因?yàn)闂l件不成立,所以K位置不變5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj因?yàn)闂l件不成立,所以K位置不變5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj因?yàn)闂l件不成立,所以K位置不變5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj因?yàn)闂l件不成立,所以K位置不變5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
7192935950277941ikj交換a[i]、a[k]兩元素的值5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)7195.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
9392715950277941ikj交換a[i]、a[k]兩元素的值5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)9395.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
9392715950277941ikj第二趟開始,I取值為15.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)9395.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
9392715950277941ikj重新定位K,取與I相同值5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)9395.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(a[k]<a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}
9392715950277941ikjJ從I+1重新開始循環(huán)……5.2一維數(shù)組及應(yīng)用for(i=0;i<7;i++)939inta[6]={0},i;charc;printf("請(qǐng)輸入選票編號(hào):");while((c=getche())!='#'){if(c<'1'||c>'5')c='0';a[c-48]++;}for(i=0;i<6;i++)printf(“\n%d號(hào):%d票\n",i,a[i]);5.2一維數(shù)組及應(yīng)用5.用數(shù)組可以優(yōu)化程序統(tǒng)計(jì)選票:有5個(gè)侯選人,選票號(hào)分別為1~5,從鍵盤鍵入,“#”號(hào)結(jié)束。除1~5以外的其它號(hào)以廢票計(jì)。本題可以用多分支結(jié)構(gòu)完成,但程序代碼長(zhǎng)度較長(zhǎng),如果用數(shù)組則非常簡(jiǎn)單。inta[6]={0},i;charc;5.2一維數(shù)組5.3.1二維數(shù)組的定義(P138)5.3.2二維數(shù)組元素的引用與遍歷與二維數(shù)組元素的引用相似,元素由下標(biāo)來確定位置:數(shù)組名[行下標(biāo)][列下標(biāo)]
如果要遍歷一個(gè)二維數(shù)組的所有元素,一般用雙循環(huán)嵌套完成。5.3二維數(shù)組及應(yīng)用5.3.1二維數(shù)組的定義(P138)5.3二維數(shù)組及應(yīng)用5.3二維數(shù)組及應(yīng)用main(){inti,j,a[10][10];/*定義10*10數(shù)組*/for(i=0;i<10;i++)/*遍歷行*/for(j=0;j<10;j++)/*遍歷列*/a[i][j]=i+j;/*遍歷賦值*/for(i=0;i<10;i++){for(j=0;j<10;j++)printf(“%5d”,a[i][j]);/*遍歷輸出*/printf(“\n”);/*換行輸出*/}}5.3二維數(shù)組及應(yīng)用main()5.3.3二維數(shù)組的應(yīng)用
1.輸出10行楊輝三角形(直角三角形)特點(diǎn)如下圖所示:如果將各數(shù)據(jù)放入一個(gè)二維數(shù)組的話,那楊輝三角形占據(jù)了二維數(shù)組的下半部分,且列標(biāo)為0的元素及行列標(biāo)相等的元素值為1,其它元素均為其左肩元素和頭頂元素之和。5.3二維數(shù)組及應(yīng)用5.3.3二維數(shù)組的應(yīng)用5.3二維數(shù)組及應(yīng)用5.3二維數(shù)組及應(yīng)用/*核心代碼為賦值*/for(i=0;i<10;i++)/*遍歷行,共10行*/for(j=0;j<=i;j++)/*遍歷列,不需為所有數(shù)組元素賦值*/if(i==j||j==0)/*如果是第0列或主對(duì)角線(行列標(biāo)相等)*/a[i][j]=1;/*這些元素賦值為1*/else/*否則其它元素等于*/a[i][j]=a[i-1][j]+a[i-1][j-1];/*頭頂元素與左肩元素之和*/5.3二維數(shù)組及應(yīng)用/*核心代碼為賦值*/5.3.3二維數(shù)組的應(yīng)用
2.輸出10行楊輝三角形(等腰三角形)楊輝三角數(shù)據(jù)一旦進(jìn)入二維數(shù)組后,以什么樣的形式輸出就非常簡(jiǎn)單了,比如還可以以等腰三角形輸出。這里需要用到一個(gè)定位輸出函數(shù)gotoxy(列,行)函數(shù)。5.3二維數(shù)組及應(yīng)用5.3.3二維數(shù)組的應(yīng)用5.3二維數(shù)組及應(yīng)用5.3二維數(shù)組及應(yīng)用/*核心代碼為輸出*/for(i=0;i<10;i++){gotoxy(40-i*3,i+1);/*只需要定位每行的起點(diǎn),*//*3和1是試出來的,可用別的值試試*/for(j=0;j<=i;j++)printf(“%6d”,a[i][j]);/*遍歷輸出,注意6和前面3的關(guān)系*//*因?yàn)槊啃械钠瘘c(diǎn)由gotoxy函數(shù)定位,所以不需要換行語句了*/}5.3二維數(shù)組及應(yīng)用/*核心代碼為輸出*/5.3.3二維數(shù)組的應(yīng)用
3.二維數(shù)組的轉(zhuǎn)置(如下圖所示)(1)定義兩個(gè)數(shù)組A,B;
(2)為A數(shù)組各元素賦值,為方便我們可用隨機(jī)數(shù);
(3)將A[i][j]元素的值賦給B[j][i],完成轉(zhuǎn)置;
(4)輸出A數(shù)組各元素和B數(shù)組各元素;5.3二維數(shù)組及應(yīng)用5.3.3二維數(shù)組的應(yīng)用5.3二維數(shù)組及應(yīng)用5.3.3二維數(shù)組的應(yīng)用
4.為15個(gè)學(xué)生5門課成績(jī)求總分,并排序后輸出5.3二維數(shù)組及應(yīng)用(1)定義數(shù)組A[15][8],多出三列用于放總分和名次、學(xué)號(hào);
(2)賦值時(shí),學(xué)號(hào)用1-15,成績(jī)用隨機(jī)數(shù)生成;(3)對(duì)每個(gè)學(xué)生計(jì)算總分;(4)對(duì)總分列按降序排序,注意交換時(shí)整行交換;(5)填入名次(6)輸出整個(gè)數(shù)組5.3.3二維數(shù)組的應(yīng)用5.3二維數(shù)組及應(yīng)用(1#defineswap(x,y){t=x;x=y;y=t;}/*定義交換兩個(gè)變量的宏*/main(){inti,j,a[15][8],k,p,q,t;for(i=0;i<15;i++){a[i][0]=i+1;/*用i+1作為學(xué)號(hào)*/for(j=1;j<6;j++)a[i][j]=rand()%51+50;}/*隨機(jī)產(chǎn)生學(xué)生成績(jī)賦值*/for(i=0;i<15;i++)/*求總分,放在第6列*/{a[i][6]=0;for(j=1;j<6;j++)a[i][6]+=a[i][j];}for(p=0;p<14;p++)/*對(duì)第6例用比較交換法排序*/for(q=p+1;q<15;q++)if(a[p][6]<a[q][6])for(k=0;k<7;k++)swap(a[p][k],a[q][k]);/*注意交換時(shí)要換整行數(shù)據(jù)*/for(i=0;i<15;i++)a[i][7]=i+1;/*用將名次放在第7列,沒有考慮總分相同的情況*/for(i=0;i<15;i++){for(j=0;j<8;j++)printf(“%5d”,a[i][j]);/*輸出數(shù)組的各元素*/printf("\n");}getch();}5.3二維數(shù)組及應(yīng)用#defineswap(x,y){t=x;x=y;y=t知識(shí)引申:如何將處理結(jié)果永久存放呢?這就需要存放到文件中:將數(shù)據(jù)寫入文件需要有以下幾步:1.程序中包含頭文件:#include<stdio.h>2.定義一個(gè)文件指針:FILE*fp;/*fp是指針名,可任意*/
3.在指定文件夾下創(chuàng)建一個(gè)文件,格式為:
文件指針=fopen(文件名,”w”);4.將數(shù)據(jù)寫入文件中的格式:fprintf(文件指針,”格式符”,變量列表);5.文件寫完成后,需要關(guān)閉打開的文件,格式為:
fclose(文件指針);5.3二維數(shù)組及應(yīng)用知識(shí)引申:如何將處理結(jié)果永久存放呢?這就需要存放到文件#defineswap(x,y){t=x;x=y;y=t;}/*定義交換兩個(gè)變量的宏*/#include<stdio.h>/*文件操作必須要包含的頭文件*/main(){inti,j,a[15][8],k,p,q,t;
FILE*fp;/*定義文件指針*/for(i=0;i<15;i++){a[i][0]=i+1;/*用i+1作為學(xué)號(hào)*/for(j=1;j<6;j++)a[i][j]=rand()%51+50;}/*隨機(jī)產(chǎn)生學(xué)生成績(jī)賦值*/for(i=0;i<15;i++)/*求總分,放在第6列*/{a[i][6]=0;for(j=1;j<6;j++)a[i][6]+=a[i][j];}for(p=0;p<14;p++)/*對(duì)第6例用比較交換法排序*/for(q=p+1;q<15;q++)if(a[p][6]<a[q][6])for(k=0;k<7;k++)swap(a[p][k],a[q][k]);/*注意交換時(shí)要換整行數(shù)據(jù)*/for(i=0;i<15;i++)a[i][7]=i+1;/*用將名次放在第7列,沒有考慮總分相同的情況*/
fp=fopen("c:\\abc.txt","w");/*在C盤根目錄下創(chuàng)建一個(gè)新文件*/for(i=0;i<15;i++){for(j=0;j<8;j++)fprintf(fp,"%5d",a[i][j]);/*將數(shù)組的各元素值寫入文件*/
fprintf(fp,"\n");}/*每寫完一行換行*/
fclose(fp);/*關(guān)閉數(shù)據(jù)文件*/printf("ok!");/*提示信息*/getch();}#defineswap(x,y){t=x;x=y;y=t*5.N階魔方陣問題,(N為奇數(shù))
魔方陣的條件是:(1)1在首行的正中間;
(2)下一個(gè)數(shù)在上一個(gè)數(shù)的上一行下一列;
(3)如果當(dāng)前位置為首行,則其上一行為最后一行;如果當(dāng)前列為最后一列,則其下一列為首列。
(4)如果發(fā)生沖突(即計(jì)算出的位置上已經(jīng)有值),則將下一個(gè)值放在當(dāng)前位置的下一行相同列位置上。5.3二維數(shù)組及應(yīng)用*5.N階魔方陣問題,(N為奇數(shù))5.3二維數(shù)組及應(yīng)用6.3二維數(shù)組及應(yīng)用main(){inta[20][20]={0},n,m,x,y,p,q;/*因?yàn)镃中不能動(dòng)態(tài)定義數(shù)組,所以先定義一個(gè)大一點(diǎn)的二維數(shù)組*/do{printf("pleaseinputn(nisaoddnumber):");scanf("%d",&n);}while(n%2==0);/*精典程序段,保證輸入合法數(shù)據(jù)*/x=1;y=n/2+1;a[x][y]=1;/*將1放在第1行中間*/for(m=2;m<=n*n;m++){p=x;q=y;/*記錄當(dāng)前放置的位置*/if(x==1)x=n;elsex--;/*定位下一個(gè)數(shù)的行位置*/if(y==n)y=1;elsey++;/*定位下一個(gè)數(shù)的列位置*/if(a[x][y]!=0)x=p+1,y=q;/*如果已經(jīng)放過數(shù),則重新定位*/a[x][y]=m;/*放入一個(gè)數(shù)到指定位置*/}for(x=1;x<=n;x++)/*輸出放好數(shù)的魔方陣*/{for(y=1;y<=n;y++)printf("%7d",a[x][y]);printf("\n");}getch();}6.3二維數(shù)組及應(yīng)用main()*6.心靈感應(yīng)
先想一個(gè)0~60之間的數(shù),再依次從六張卡片中回答有還是沒有你想的數(shù),最后由計(jì)算機(jī)輸出你想的那個(gè)數(shù).原理:(1)對(duì)于一個(gè)二進(jìn)制數(shù)來說,將從低位到高位的每一個(gè)1按1,2,4,8,16,32轉(zhuǎn)換,再相加就是對(duì)應(yīng)的十進(jìn)制數(shù).(2)0~60之間的數(shù)化為二進(jìn)制后不超過6位,轉(zhuǎn)換成二進(jìn)制后,從低位到高位,只要第1位上有1的數(shù)都在第1張卡片上,第2位有1的數(shù)都在第2張卡片上……,
(3)每張卡片上第1個(gè)數(shù)剛好依次是1,2,4,8,16,32,只回答”有”,就將這張卡片上的第1個(gè)數(shù)相加,最后就可以得到這個(gè)數(shù).5.3二維數(shù)組及應(yīng)用*6.心靈感應(yīng)5.3二維數(shù)組及應(yīng)用6.3二維數(shù)組及應(yīng)用main(){inta[6][30]={{1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59},{2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31,34,35,38,39,42,43,46,47,50,51,54,55,58,59},{4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31,36,37,38,39,44,45,46,47,52,53,54,55,60,0},{8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31,40,41,42,43,44,45,46,47,56,57,58,59,60,0},{16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,48,49,50,51,52,53,54,55,56,57,58,59,60,0},{32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,0}};intx=0,i,j,q;printf("請(qǐng)想一個(gè)1~60之間的數(shù),想好了以后按任意鍵……\n");getch();for(i=0;i<6;i++){printf("這是第%d張卡片\n",i+1);for(j=0;j<30;j++){if(a[i][j]!=0)printf("%4d",a[i][j]);if((j+1)%5==0)printf("\n");}printf("有你所想的數(shù)字么[有1/無0]?");scanf("%d",&q);/*這里可增加控制無效數(shù)據(jù)錄入的程序段*/if(q==1)x=x+a[i][0];}/*如果有,則累加左上角數(shù)據(jù),即位權(quán)*/if(x>60)printf("你想的數(shù)不在1-60之間!\n");/*累加超過60,輸出錯(cuò)誤信息*/elseprintf("你想的數(shù)字是:%d\n",x);}6.3二維數(shù)組及應(yīng)用main()5.4一維字符數(shù)組1.字符數(shù)組用于存放字符的ASCII碼值,每個(gè)數(shù)組元素存放一個(gè)字符,占用一個(gè)字節(jié)。2.字符串存放于字符數(shù)組中,其中最后一個(gè)元素值為0。3.字符數(shù)組與字符串的區(qū)別(1)字符串肯定是存放在字符數(shù)組中的,且最后一個(gè)元素的值為0(0就是“\0”);(2)以“\0”結(jié)束的字符數(shù)組可以當(dāng)字符串處理。4.字符數(shù)組元素的引用與前面介紹過的數(shù)值引用相同,一個(gè)元素占一個(gè)字節(jié),-128~127(帶符號(hào))或0~255(無符號(hào))之間,當(dāng)只用作字符處理時(shí),二者是一致的,沒有正負(fù)之分。
5.4一維字符數(shù)組1.字符數(shù)組用于存放字符的ASCII5.4一維字符數(shù)組5.字符串長(zhǎng)度函數(shù)strlen
求字符串長(zhǎng)度函數(shù)是從指定地址開始,遇到0結(jié)束,求出長(zhǎng)度中不包括0那個(gè)字節(jié)。6.字符串常量用雙引號(hào)引住的內(nèi)容被稱為字符串常量,字符串常量在內(nèi)存中被保存在一個(gè)特殊的區(qū)域,字符串常量后會(huì)自動(dòng)加0,以保證字符串能正常結(jié)束。7.從鍵盤為字符串賦值可用scanf或gets,后者更方便。8.字符串輸出可以用printf或puts,后者更方便。5.4一維字符數(shù)組5.字符串長(zhǎng)度函數(shù)strlen9.字符數(shù)組元素的遍歷,先求出字符串長(zhǎng)度,再用for循環(huán)完成(前提:必須有0做結(jié)束標(biāo)志,否則求不出長(zhǎng)度!)#include<string.h>main(){chara[]="Ilovethisgame!";intn=strlen(a),i;for(i=0;i<n;i++){printf("%c",a[i]);sleep(1);}getch();}5.4一維字符數(shù)組9.字符數(shù)組元素的遍歷,先求出字符串長(zhǎng)度,再用for循環(huán)完#include<string.h>main(){chara[]="Ilovethisgame!";inti;for(i=0;a[i]!='\0';i++){printf("%c",a[i]);sleep(1);}getch();}10.字符數(shù)組元素的遍歷,也可以用0作循環(huán)結(jié)束條件。5.4一維字符數(shù)組#include<string.h>10.字符數(shù)組元素的11.字符數(shù)組的輸入
(1)scanf函數(shù)并用%c作為格式控制符,一次只能為一個(gè)數(shù)組元素賦值,數(shù)組元素名必須加&,不會(huì)自動(dòng)加\0,少用;
scanf("%c",&a[i]);5.4一維字符數(shù)組11.字符數(shù)組的輸入scanf("%c",&a[i]);11.字符數(shù)組的輸入
(2)scanf函數(shù)并用%s作為格式控制符,一次可為一個(gè)數(shù)組所有元素賦值,直接用數(shù)組名,不能再加&符,會(huì)在最后自動(dòng)加\0,缺點(diǎn):輸入帶空格的字符串時(shí)只能接收第一個(gè)空格前的字符。
scanf("%s",a);
scanf("%s",&a);因?yàn)閿?shù)組名本來就是字符串的首地址,所以不能再加“&”符號(hào)。5.4一維字符數(shù)組11.字符數(shù)組的輸入scanf("%s",a);sca11.字符數(shù)組的輸入
(3)用gets(起始地址)函數(shù)賦值,將輸入的一行字符依次賦給數(shù)組各元素,自動(dòng)在末尾加\0,最常用。gets(a);
gets(&a);5.4一維字符數(shù)組11.字符數(shù)組的輸入gets(a);gets(&a);512.字符數(shù)組的輸出
(1)printf函數(shù)并用%c作為格式控制符,一次只能輸出一個(gè)數(shù)組元素;
printf("%c",a[i]);5.4一維字符數(shù)組12.字符數(shù)組的輸出printf("%c",a[i])12.字符數(shù)組的輸出
(2)printf函數(shù)并用%s作為格式控制符,格式為:
printf(“%s”,一個(gè)地址);功能:從指定地址的元素開始輸出,到遇到的第一個(gè)\0時(shí)結(jié)束。注意:輸出時(shí)指定的必須是一個(gè)地址main(){chara[]="Ilovethisgame!";inti;for(i=0;a[i]!='\0';i++)printf("%s\n",a[i]);getch();}printf("%s\n",&a[i]);5.4一維字符數(shù)組12.字符數(shù)組的輸出printf(“%s”,一個(gè)地址);12.字符數(shù)組的輸出
(3)用puts(字符數(shù)組首地址)函數(shù)輸出,最常用,它是從指定地址開始,輸出到遇到第一個(gè)\0結(jié)束。puts(a);
puts(&a);
puts(&a[i]);main(){chara[]="Ilovethisgame!";inti;for(i=0;a[i]!='\0';i++)puts(&a[i]);getch();}5.4一維字符數(shù)組12.字符數(shù)組的輸出puts(a);puts(&a);示例:從鍵盤上輸入一個(gè)英文句子,統(tǒng)計(jì)其中英文單詞的個(gè)數(shù)(單詞之間用空格隔開)。main(){chara[100];/*不知道句子有多長(zhǎng),所以定義100個(gè)字符*/intn=0,i;printf("Pleaseintpuasentence:\n");gets(a);for(i=0;a[i]!=0;i++)if(a[i]==32)n++;printf("Thissentencehas%dword(s)\n",n+1);getch();}
如果兩個(gè)單詞之間有多個(gè)空格呢?5.4一維字符數(shù)組示例:從鍵盤上輸入一個(gè)英文句子,統(tǒng)計(jì)其中英文單詞main()主要用于存儲(chǔ)多個(gè)字符串,與二維數(shù)值數(shù)組相同,只是需要注意每一行行尾需要一個(gè)\0作本行字符串的結(jié)束標(biāo)志,并要求必須按這些字符串中最長(zhǎng)的字符串字符個(gè)數(shù)定義列數(shù)。示例.將"China","Russin",Japan","America","Canada","NewZealand"等六個(gè)國家名存入一個(gè)二維數(shù)組并輸出。5.5二維字符數(shù)組main(){charp[6][11]={"China","Russin",Japan","America","Canada","NewZealand"};inti;for(i=0;i<6;i++)puts(p[i]);getch();}主要用于存儲(chǔ)多個(gè)字符串,與二維數(shù)值數(shù)組相同,只是需要示例.從鍵盤上輸入10個(gè)學(xué)生姓名并輸出。main(){chara[10][20];inti;for(i=0;i<10;i++){printf("請(qǐng)輸入第%d個(gè)學(xué)生姓名:",i+1);gets(a[i]);}for(i=0;i<10;i++)printf("第%d個(gè)學(xué)生姓名是:%s\n",i+1,a[i]);}5.5二維字符數(shù)組示例.從鍵盤上輸入10個(gè)學(xué)生姓名并輸出。main()5.55.5字符串處理函數(shù)1.字符串測(cè)長(zhǎng)度函數(shù)strlen
格式:strlen(地址)
功能:從指定地址開始到遇到第一個(gè)0為止的字節(jié)數(shù),結(jié)果為一個(gè)整型值。示例:main(){chara[]="Ilovethisgame!";inti;for(i=0;a[i]!='\0';i++)printf(“%d\n”,strlen(&a[i]);getch();}5.5字符串處理函數(shù)1.字符串測(cè)長(zhǎng)度函數(shù)strlenma5.5字符串處理函數(shù)2.字符串連接函數(shù)strcat
格式:strcat(地址1,地址2)
功能:將從地址2開始到遇到第一個(gè)0為止的內(nèi)容連接到地址1后面第一個(gè)0開始的那個(gè)字節(jié)。示例1:將從鍵盤上輸入的兩個(gè)字符串連成一個(gè)字符串。main(){chara[100],b[100];printf("pleaseinputfirstsentence:\n");gets(a);printf("pleaseinputsecondsentence:\n");gets(b);strcat(a,b);printf("result:\n");puts(a);getch();}5.5字符串處理函數(shù)2.字符串連接函數(shù)strcatmai5.5字符串處理函數(shù)3.字符串整體復(fù)制函數(shù)strcpy
格式:strcpy(地址1,地址2)
功能:將從地址2那個(gè)字節(jié)開始到遇到第一個(gè)0為止的所有內(nèi)容(連同那個(gè)0),復(fù)制到地址1所指向的那個(gè)字節(jié)。示例:去掉從鍵盤上輸入的一個(gè)有若干前導(dǎo)空格的字符串的所有前導(dǎo)空格。main(){chara[100]="ilovethisgame!";inti;printf("before:\n");puts(a);for(i=0;a[i]==32;i++);strcpy(&a[0],&a[i]);printf("after:\n");puts(a);getch();}5.5字符串處理函數(shù)3.字符串整體復(fù)制函數(shù)strcpym5.5字符串處理函數(shù)4.字符串部分復(fù)制函數(shù)strncpy
格式:strncpy(地址1,地址2,n)功能:將從地址2那個(gè)字節(jié)開始的n個(gè)字符復(fù)制到地址1指定的那個(gè)位置,如果中間有0,則復(fù)制到0為止(含0!問題:如何驗(yàn)證呢?)。main(){chara[100]="ilovethisgame!";inti;printf("before:\n");puts(a);for(i=0;a[i]!='g';i++);strncpy(&a[0],&a[i],4);printf("after:\n");puts(a);getch();}5.5字符串處理函數(shù)4.字符串部分復(fù)制函數(shù)strncpy5.5字符串處理函數(shù)5.字符串比較函數(shù)strcmp
格式:strcmp(地址1,地址2)
功能:將兩個(gè)地址所對(duì)應(yīng)的字節(jié)內(nèi)容自左向右逐個(gè)進(jìn)行比較,直到遇到不同值或其中一個(gè)0為止。比較結(jié)果是兩個(gè)不同值的差值(整型值)。如果兩個(gè)字符串長(zhǎng)度相等,對(duì)應(yīng)位置字符也相同,則比較結(jié)果為0,說明這兩個(gè)字符串相等。main(){chara[]="this",b[]="that";printf("%d",strcmp(a,b));getch();}5.5字符串處理函數(shù)5.字符串比較函數(shù)strcmpmai5.5字符串處理函數(shù)示例:將"China","Russin",Japan","America","Canada","NewZealand"等六個(gè)國家名按升序排序后輸出main(){chara[][20]={"China","Russin","Japan","America","Canada","NewZealand"},b[20];inti,j;for(i=0;i<6;i++)/*輸出排序前的國家名*/puts(&a[i][0]);for(i=0;i<5;i++)for(j=i+1;j<6;j++)if(strcmp(&a[i][0],&a[j][0])>0)/*注意與數(shù)值型數(shù)據(jù)比較方法的區(qū)別*/{strcpy(b,&a[i][0]);/*注意與數(shù)值型數(shù)據(jù)交換方法的區(qū)別*/strcpy(&a[i][0],&a[j][0]);strcpy(&a[j][0],b);}printf("\n\n");for(i=0;i<6;i++)puts(a[i]);/*注意這里和前面輸出語句的區(qū)別*/getch();}5.5字符串處理函數(shù)示例:將"China","R1.理解基本概念:數(shù)組、數(shù)組元素、數(shù)組元素地址、二維數(shù)組的行首地址;
2.什么是連續(xù)存儲(chǔ)、二維數(shù)組按行存儲(chǔ)?
3.P132中定義數(shù)組的一般形式中格式為類型說明符數(shù)組標(biāo)識(shí)符[常量表達(dá)式]
常量表達(dá)式是什么意思?
4.怎樣理解對(duì)數(shù)組越界讀無意義,越界寫可能破壞其它程序數(shù)據(jù)?
5.如何初始化數(shù)組元素,定義數(shù)組時(shí)省略數(shù)組元素個(gè)數(shù)時(shí),數(shù)組元素個(gè)數(shù)是如何確定的(P137及P142)?6.二維數(shù)組對(duì)全部元素賦初值時(shí)能省略哪一維的長(zhǎng)度(P142)?7.本章所有講到的例題需要認(rèn)真理解。5.6本章小結(jié)1.理解基本概念:數(shù)組、數(shù)組元素、數(shù)組元素地址、二
1.。5.7作業(yè)與實(shí)習(xí)1.。5.7作業(yè)與實(shí)習(xí)
數(shù)組
數(shù)組本章主要內(nèi)容
1.數(shù)組基本概念
2.一維數(shù)組及應(yīng)用
3.二維數(shù)組及應(yīng)用
4.字符數(shù)組和字符串本章主要內(nèi)容1.數(shù)組基本概念5.1數(shù)組的概念C語言中定義普通變量就是按變量的數(shù)據(jù)類型找到相應(yīng)大小的存儲(chǔ)空間例如:
inta1,a2;floata3;chara4a1a2整型變量占兩個(gè)字節(jié)5.1數(shù)組的概念C語言中定義普通變量就是按變量
inta1,a2;floata3;chara4a1a2a3實(shí)型變量占四個(gè)字節(jié)C語言中定義普通變量就是按變量的數(shù)據(jù)類型找到相應(yīng)大小的存儲(chǔ)空間例如:5.1數(shù)組的概念inta1,a2;a1a5.1數(shù)組的概念
inta1,a2;floata3;chara4a1a2a3a4C語言中定義普通變量就是按變量的數(shù)據(jù)類型找到相應(yīng)大小的存儲(chǔ)空間例如:字符型變量占1個(gè)字節(jié)5.1數(shù)組的概念int5.1數(shù)組的概念C語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)類型及元素個(gè)數(shù)找到相應(yīng)大小的一組連續(xù)的存儲(chǔ)空間。例如:
inta[4]a[0]=2a[3]=5a[2]=3a定義了0~3共4個(gè)元素占8個(gè)字節(jié)[0][1][2][3]5.1數(shù)組的概念C語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)5.1數(shù)組的概念
inta[4]a[0]=2a[3]=5a[2]=3a2C語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)類型及元素個(gè)數(shù)找到相應(yīng)大小的一組連續(xù)的存儲(chǔ)空間。例如:5.1數(shù)組的概念int5.1數(shù)組的概念
inta[4]a[0]=2a[3]=5a[2]=3aC語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)類型及元素個(gè)數(shù)找到相應(yīng)大小的一組連續(xù)的存儲(chǔ)空間。例如:525.1數(shù)組的概念int5.1數(shù)組的概念
inta[4]a[0]=2a[3]=5a[2]=3aC語言中定義數(shù)組就是按數(shù)組數(shù)據(jù)類型及元素個(gè)數(shù)找到相應(yīng)大小的一組連續(xù)的存儲(chǔ)空間。例如:5235.1數(shù)組的概念int5.1數(shù)組的概念1、數(shù)組是內(nèi)存中的一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《夢(mèng)回繁華》-八年級(jí)語文上冊(cè)同步備課 教學(xué)設(shè)計(jì)(統(tǒng)編版)
- 江蘇省金壇市七年級(jí)體育與健康上冊(cè) 女生800長(zhǎng)跑測(cè)驗(yàn)教案
- 八年級(jí)生物上冊(cè) 5.1.3《軟體動(dòng)物和節(jié)肢動(dòng)物》教案2 (新版)新人教版
- 2024-2025學(xué)年高中語文 第2單元 置身詩境緣景明情 9 夢(mèng)游天姥吟留別教案 新人教版選修《中國古代詩歌散文欣賞》
- 2023三年級(jí)數(shù)學(xué)下冊(cè) 六 走進(jìn)天文館-年、月、日信息窗1 24時(shí)計(jì)時(shí)法教案 青島版六三制
- 2024-2025學(xué)年新教材高中政治 第一單元 探索世界與把握規(guī)律 1.3 科學(xué)的世界觀和方法論教案 部編版必修4
- 二年級(jí)語文下冊(cè) 課文1 4 鄧小平爺爺植樹第1課時(shí)教案 新人教版
- 2024-2025學(xué)年新教材高中生物 第五章 基因突變及其他變異 第3節(jié) 人類遺傳病教案 新人教版必修第二冊(cè)
- 出行帶小孩委托書范文
- 人教A版河北省唐山市2023-2024學(xué)年高一上學(xué)期期末模擬數(shù)學(xué)試題
- 專題二十八 當(dāng)代資本主義流通有哪些新變化
- 建筑給水鋼塑復(fù)合管管道工程技術(shù)規(guī)程2020
- 如何撰寫和發(fā)表高水平的科研論文-good ppt
- 企業(yè)參保人員基本養(yǎng)老金申領(lǐng)表
- 測(cè)量血壓的正確方法-PPT
- 快速消費(fèi)品行業(yè)名詞釋義匯總
- ICH指南指導(dǎo)原則Q8(R2)藥品研發(fā)
- 2022玻璃棧道工程技術(shù)規(guī)程
- 幼兒園課件小小銀行家
- 離婚登記申請(qǐng)受理回執(zhí)單
- 初高中數(shù)學(xué)銜接講座
評(píng)論
0/150
提交評(píng)論