C語言數(shù)組課件_第1頁(yè)
C語言數(shù)組課件_第2頁(yè)
C語言數(shù)組課件_第3頁(yè)
C語言數(shù)組課件_第4頁(yè)
C語言數(shù)組課件_第5頁(yè)
已閱讀5頁(yè),還剩87頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語言數(shù)組課件C語言數(shù)組課件數(shù)據(jù)類型基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型intfloatcharstring

intshortintlongint數(shù)組指針結(jié)構(gòu)體共用體double2010年4月21日星期三4月21日星期三4月21日星期三3教師:趙軍富數(shù)據(jù)類型基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型intfloatcharst當(dāng)變量個(gè)數(shù)少,且彼此獨(dú)立時(shí),采用變量先定義,后賦值,再使用。如:int

a,b,c;

a=5;b=10;c=23;

printf(“%d,%d,%d”,a,b,c);當(dāng)變量個(gè)數(shù)比較多,并且有內(nèi)在的關(guān)系時(shí),例如:全班有30個(gè)人,每人一個(gè)成績(jī)

如:intc1,c2,……,c30

(可以利用數(shù)組)

數(shù)組是怎么構(gòu)成的?一組有序數(shù)據(jù)的集合,各個(gè)元素屬于同一個(gè)類型,用統(tǒng)一的名稱標(biāo)識(shí)這一組數(shù),用下標(biāo)唯一地確定這組數(shù)中的每一個(gè)值,這就構(gòu)成了“數(shù)組”。數(shù)組的基本概念數(shù)組:有限個(gè)相同數(shù)據(jù)類型的數(shù)據(jù)分量的有序集合。2010年4月21日星期三4月21日星期三4月21日星期三4教師:趙軍富當(dāng)變量個(gè)數(shù)少,且彼此獨(dú)立時(shí),采用變量先定義,后賦值,再一、一維數(shù)組的定義格式:類型標(biāo)識(shí)符[長(zhǎng)度]所有元素為同一類型變量名,即數(shù)組名數(shù)組中所含元素的個(gè)數(shù)inta[10];由10個(gè)整數(shù)組成的數(shù)組,共同擁有數(shù)組名a[]2、數(shù)組長(zhǎng)度必須是整型量inta[2*3]說明:1、用方括號(hào)將數(shù)組的長(zhǎng)度括起來3、數(shù)組長(zhǎng)度也可以用常量表達(dá)式4、不能對(duì)長(zhǎng)度做動(dòng)態(tài)定義,或者不定義長(zhǎng)度如:intn;n=10;inta[n];§6.1一維數(shù)組的定義和使用例如:inta[5];2010年4月21日星期三4月21日星期三4月21日星期三5教師:趙軍富一、一維數(shù)組的定義格式:類型標(biāo)識(shí)符[長(zhǎng)度]所有元數(shù)組的三要素:(1)相同的數(shù)據(jù)類型(定義數(shù)組時(shí)規(guī)定)(2)有限的成員個(gè)數(shù)(定義數(shù)組時(shí)規(guī)定)(3)彼此有序的排列(引用數(shù)組元素時(shí)的下標(biāo))inta[5]inta[5];a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;§6.1一維數(shù)組的定義和使用2010年4月21日星期三4月21日星期三4月21日星期三6教師:趙軍富數(shù)組的三要素:(1)相同的數(shù)據(jù)類型(定義數(shù)組時(shí)規(guī)定)(2)有數(shù)據(jù)類型數(shù)組名[常量表達(dá)式]={初始化數(shù)據(jù)};格式:1.定義數(shù)組時(shí),對(duì)全部元素賦值

inta[5]={1,2,3,4,5};2.對(duì)部分元素賦值floatx[5]={1.9,2.0};x[0]=1.9;x[1]=2.0;3.若要對(duì)數(shù)組的全部元素初始化,則可省略數(shù)組的長(zhǎng)度inta[]={1,2,3,4};二、一維數(shù)組的初始化§6.1一維數(shù)組的定義和使用用{}包括所有初值,用逗號(hào)分隔各數(shù)值,且初值的個(gè)數(shù)不能大于數(shù)組長(zhǎng)度。按順序給前2個(gè)元素賦值,其余元素為均為0數(shù)組長(zhǎng)度=元素的個(gè)數(shù)2010年4月21日星期三4月21日星期三4月21日星期三7教師:趙軍富數(shù)據(jù)類型數(shù)組名[常量表達(dá)式]={初始化數(shù)據(jù)};格式:1三、一維數(shù)組元素的引用1、數(shù)組必須先定義,后賦值,再使用

2、數(shù)組中的元素必須逐一引用3、通過數(shù)組名及其元素的下標(biāo)引用定義:類型數(shù)組名[長(zhǎng)度]

如:

inta[10]引用:

數(shù)組名[下標(biāo)]

a[0],a[1],…a[9]為數(shù)組a[10]中的所有元素(1)下標(biāo)表示了元素在數(shù)組中的位置(2)下標(biāo)可以用表達(dá)式a[2*3]相當(dāng)于a[6]說明§6.1一維數(shù)組的定義和使用下標(biāo)范圍從0到長(zhǎng)度-12010年4月21日星期三4月21日星期三4月21日星期三8教師:趙軍富三、一維數(shù)組元素的引用1、數(shù)組必須先定義,后賦值,再使用例1:main(){inti;inta[10]={1,2,3,4,5,6,7,8,9,10};for(i=0;i<10;i++)printf("%3d",a[i]);}運(yùn)行結(jié)果:12345678910

§6.1一維數(shù)組的定義和使用inta[10];for(i=0;i<10;i++)scanf("%d",&a[i]);通過數(shù)組名和下標(biāo),引用數(shù)組中的每一個(gè)元素2010年4月21日星期三4月21日星期三4月21日星期三9教師:趙軍富例1:main()運(yùn)行結(jié)果:1234567例:有一個(gè)數(shù)組,內(nèi)有10個(gè)元素,求出最小的元素和它的下標(biāo)。71332668153206512inta[10]a[0]a[i]a[9]i=?1.定義兩個(gè)臨時(shí)變量min和k2.假定第一個(gè)元素就是最小的,min=a[0],k=03.用min與數(shù)組中的每一個(gè)元素a[i]比較,若a[i]比min小,將a[i]賦給min,同時(shí)將下標(biāo)i賦給k,否則,繼續(xù)比較?!?.1一維數(shù)組的定義和使用分析:2010年4月21日星期三4月21日星期三4月21日星期三10教師:趙軍富例:有一個(gè)數(shù)組,內(nèi)有10個(gè)元素,求出最小的元素和它的71332671332668153206512min=a[0]i=1i=2i=3i=4i=5i=6i=7i=8i=913<26min=a[1]k=1循3<13min=a[2]k=268>3min和k的值不變13320>3min和k的值不變1<3min=a[5],k=57>1min和k的值不變1&min53>1min和k的值不變12>1min和k的值不變65>1min和k的值不變min=1k=5§6.1一維數(shù)組的定義和使用2010年4月21日星期三4月21日星期三4月21日星期三11教師:趙軍富2671332668153206512min=a[0]i=1main(){inti,a[10],min,k;

for(i=0;i<10;i++)scanf(“%d”,&a[i]);min=a[0];k=0;for(i=1;i<10;i++)if(min>a[i]){min=a[i];k=i;

}

printf(“%d,%d”,k,min);}循環(huán)輸入10個(gè)數(shù)循環(huán)找出最小的輸出最小值和原始下標(biāo)2010年4月21日星期三4月21日星期三4月21日星期三12教師:趙軍富main()循環(huán)輸入10個(gè)數(shù)循環(huán)找出最小的輸出最小值和原始例1.

將6個(gè)實(shí)數(shù)由小到大排序。58947258947215894722589472348957244895725第一輪結(jié)束:289574289574第一輪249875第二輪245987第三輪245798第四輪245789第五輪結(jié)果:245789算法一:選擇排序法選擇排序思路:將數(shù)組中的每一個(gè)元素和其后面所有的元素進(jìn)行比較,如果某一個(gè)元素小于該數(shù),將互換位置。第一輪開始:2010年4月21日星期三4月21日星期三4月21日星期三13教師:趙軍富例1.將6個(gè)實(shí)數(shù)由小到大排序。589#include<stdio.h>main(){ inta[6]={5,8,9,4,7,2}; inti,j,t; for(i=0;i<5;i++)//i為比較的第幾輪

{ for(j=i+1;j<6;j++)//j為每輪的第幾遍

{ if(a[i]>a[j]) { t=a[i];a[i]=a[j];a[j]=t; } } } for(i=0;i<6;i++)//將比較后的記過輸出來

{ printf("%5d",a[i]); }}程序代碼一:2010年4月21日星期三4月21日星期三4月21日星期三14教師:趙軍富#include<stdio.h>程序代碼一:2010年4#include<stdio.h>main(){inta[6]={5,8,9,4,7,2},i,j,t,k;/*k為數(shù)組的下標(biāo)*/for(i=0;i<5;i++)/*i循環(huán)比較的輪數(shù)*/{k=i;for(j=i+1;j<6;j++)/*每輪比較次數(shù)*/if(a[k]>a[j])k=j;/*記下較小的元素的下標(biāo)*/t=a[i];a[i]=a[k];a[k]=t;/*每輪結(jié)束后交換*/}for(i=0;i<6;i++)printf("a[%d]=%d\n",i,a[i]);}程序代碼二:2010年4月21日星期三4月21日星期三4月21日星期三15教師:趙軍富#include<stdio.h>程序代碼二:2010年4算法二:冒泡排序冒泡法的思路:將相鄰兩個(gè)數(shù)比較,如果相鄰的兩個(gè)值是升序排列的,就保持原樣,如果是降序排列的,就交換它們的值。(實(shí)質(zhì):大的沉下去,小的浮上來)

start:a[0]a[1]

a[2]

a[3]a[4]

a[5]

a[6]a[7]257298942341611

times:22957

42

34

16

1

89

2

times:

229

42

34

16

157

89

3

times:

2

29

34

16

1

42

57

89

4

times:229

16

134

425789

5

times:

216129

34

425789

6

times:

2116

29

34

42

57

89

7

times:

1216

29

34

42

57

892010年4月21日星期三4月21日星期三4月21日星期三16教師:趙軍富算法二:冒泡排序冒泡法的思路:將相鄰兩個(gè)數(shù)比較,如果相鄰main(){inta[10]={2,57,29,89,42,34,16,1};intpass,time,temp,xb;for(pass

=1;pass

<=9;pass

++)/*pass是循環(huán)比較的趟數(shù)*/

for(time

=0;time

<=9-pass;time

++)/*time每趟比較的次數(shù),同時(shí)作為數(shù)組的元素下標(biāo)*/if(a[time]>a[time+1])/*判斷每相鄰兩個(gè)元素下標(biāo)*/{temp

=a[time];a[time]=a[time+1];a[time+1]=temp;}

for(xb=0;xb<10;xb++)printf(“a[%d]=%d\n”,xb,a[xb]);

}程序代碼一:2010年4月21日星期三4月21日星期三4月21日星期三17教師:趙軍富main()程序代碼一:2010年4月21日星期三4月21

#include

<stdio.h>

#define

SIZE

8

main()

{

int

a[SIZE]={2,57,29,89,42,34,16,1};

int

i,

pass,

hold;

clrscr();

for(i=0;i<=SIZE-1;i++)

printf("%4d",

a[i]);

printf("\n");

for(pass=1;pass<=SIZE-1;pass++)

/*比較趟數(shù)*/

for(i=0;i<=(SIZE-1-1);i++)/*比較一趟*/

if(a[i]>a[i+1]){

hold=a[i];

a[i]=a[i+1];

a[i+1]=hold;}

for(i=0;i<=SIZE-1;i++)printf("%4d",a[i]);

}

程序代碼二:2010年4月21日星期三4月21日星期三4月21日星期三18教師:趙軍富

#include

<stdio.h>程序代碼二:20§6.2二維數(shù)組的定義和引用當(dāng)一個(gè)一維數(shù)組中的每個(gè)元素本身又是一個(gè)一維數(shù)組時(shí),該數(shù)組構(gòu)成“二維數(shù)組”。一、二維數(shù)組的定義格式:類型標(biāo)識(shí)符[長(zhǎng)度1][長(zhǎng)度2]

如:inta[4][4]行列a[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]a[3][0]a[3][1]a[3][2]a[3][3]a[0]a[1]a[2]a[3]一維數(shù)組a[4]二維數(shù)組a[4][4]2010年4月21日星期三4月21日星期三4月21日星期三19教師:趙軍富§6.2二維數(shù)組的定義和引用當(dāng)一個(gè)一維數(shù)組說明:1.二維數(shù)組元素需要兩個(gè)下標(biāo)表示例:inta[4][4]表示數(shù)組a中有4行4列共16個(gè)數(shù)據(jù)2.二維數(shù)組在存儲(chǔ)空間中是按行優(yōu)先存儲(chǔ)a[0][0]a[0][1]a[0][2]a[2][3]…..a[0][3]第一行a[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]a[3][0]a[3][1]a[3][2]a[3][3]§6.2二維數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三20教師:趙軍富說明:2.二維數(shù)組在存儲(chǔ)空間中是按行優(yōu)先存儲(chǔ)a[0][0]a二、二維數(shù)組的初始化形式:1、

對(duì)全部元素賦初值,分行,各用一個(gè){}。inta[2][3]={{1,2,3},{4,5,6}};2整體賦值,系統(tǒng)自動(dòng)分行inta[2][3]={1,2,3,4,5,6};1,2,33對(duì)部分元素賦初值,注意區(qū)別:(1)inta[2][3]={{1},{2,3}};(2)inta[2][3]={1,2,3};(3)inta[2][3]={{0},{1,2,3}};說明:當(dāng)為全部元素賦值時(shí),一維長(zhǎng)度可省略如:inta[][3]={1,2,3,4,5,6};§6.2二維數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三21教師:趙軍富二、二維數(shù)組的初始化形式:1、對(duì)全部元素賦初值,分行,各用三、二維數(shù)組的引用原則:逐一引用說明:1.數(shù)組名[下標(biāo)1][下標(biāo)2]

下標(biāo)1從0到長(zhǎng)度-1下標(biāo)2從0到長(zhǎng)度-1方法:數(shù)組名[N1][N2]如:inta[4][2]a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]a[3][0]a[3][1]§6.2二維數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三22教師:趙軍富三、二維數(shù)組的引用原則:逐一引用說明:1.數(shù)組名[下標(biāo)1]2、若定義inta[3][4],則對(duì)a的正確引用是:A)a[2][4]B)a[1,3]C)a[1+1][0]D)a(2)(1)1、以下二維數(shù)組說明方式中正確的是:A)inta[3][];B)floata(3,4);C)doublea[1][4];D)floata(3)(4);舉例:§6.2二維數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三23教師:趙軍富2、若定義inta[3][4],則對(duì)a的正確引用是:1、以例1:已知5名學(xué)生的四門課程成績(jī),求每位學(xué)生的總成績(jī),并按二維表格式輸出。姓名語文數(shù)學(xué)外語政治張三91726344李四51627354王五91829384趙六919210084劉七61725344程序代碼見下頁(yè)2010年4月21日星期三4月21日星期三4月21日星期三24教師:趙軍富例1:已知5名學(xué)生的四門課程成績(jī),求每位學(xué)生的總成績(jī),姓main(){inta[5][4]={{91,72,63,44},{51,62,73,54},{91,82,93,84},{91,92,100,84},{61,72,53,44}};inti,j,s[5];

for(i=0;i<=4;i++)/*給每個(gè)學(xué)生求總成績(jī)*/{s[i]=0;for(j=0;j<=3;j++)s[i]=s[i]+a[i][j];}for(i=0;i<=4;i++)/*輸出各學(xué)生成績(jī)二維表,并附帶總成績(jī)*/{for(j=0;j<=3;j++)

printf("%4d",a[i][j]);printf("%d\n",s[i]);}}2010年4月21日星期三4月21日星期三4月21日星期三25教師:趙軍富main()2010年4月21日星期三4月21日星期三4月2例2、計(jì)算兩個(gè)矩陣的乘積。main(){inti,j,k;inta[2][3]={1,2,3,4,5,6},b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},c[2][4]={0};for(i=0;i<2;i++){for(j=0;j<4;j++){for(k=0;k<3;k++) c[i][j]+=a[i][k]*b[k][j];}

}for(i=0;i<2;i++){for(j=0;j<4;j++)printf("%4d",c[i][j]);

printf("\n");

}}Chengji.c123456矩陣a=矩陣b=1234567891011122010年4月21日星期三4月21日星期三4月21日星期三26教師:趙軍富例2、計(jì)算兩個(gè)矩陣的乘積。main()Chengji.c1例3.不用輸入,自動(dòng)生成下列矩陣123451167811191011111111111元素值為1按行遞增

main()

{inti,j,a[5][5];

intk=2;

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

/*按行循環(huán)*/

for(j=0;j<5;j++)

/*按列循環(huán)*/

if(i>=j)a[i][j]=1;/*下三角*/else

a[i][j]=k++;

/*上三角*/for(i=0;i<5;i++){for(j=0;j<5;j++)printf(“%4d”,a[i][j]);printf(“\n”);/*輸出一行后換行

*/}}2010年4月21日星期三4月21日星期三4月21日星期三27教師:趙軍富例3.不用輸入,自動(dòng)生成下列矩陣123451、用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。2、字符數(shù)組中的每個(gè)元素存放一個(gè)字符。字符數(shù)組:一、字符數(shù)組的定義定義方式與一、二維介紹的類似。例:charc[10],d[2][3];由于字符型與整型是互相通用的,因此也可定義intc[10];二、字符數(shù)組的初始化與一、二維介紹的類似,只是數(shù)組的每一個(gè)元素對(duì)應(yīng)一個(gè)字符。charc[10]={‘I’,‘’,

‘a(chǎn)’,‘m’,‘’,‘h’,’a’,‘p’,‘p’,‘y’};charc[3][2]={{‘’,‘*’},{‘*’,‘’},{‘’,‘*’}};

§6.3字符數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三28教師:趙軍富1、用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。字符數(shù)組:一、字符數(shù)組三、字符數(shù)組的引用原則:逐一引用chara[4][2]方法:數(shù)組名[下標(biāo)1][下標(biāo)2]下標(biāo)1從0到長(zhǎng)度-1下標(biāo)2從0到長(zhǎng)度-1a[0][0]…..a[3][1]共8個(gè)數(shù)據(jù)例1.輸出一個(gè)字符串main()charc[10]={'I','','a','m','','a','','b','o','y’};{inti;printf("\n");

}§6.3字符數(shù)組的定義和引用for(i=0;i<10;i++)printf("%c",c[i]);printf("%s",c);2010年4月21日星期三4月21日星期三4月21日星期三29教師:趙軍富三、字符數(shù)組的引用原則:逐一引用chara[4][2]方法例2.輸出對(duì)角線和第一列為“*”的一個(gè)圖形。

main() {chara[5][5];inti,j; *for(i=0;i<5;i++) ** for(j=0;j<5;j++) **

{if(j==0||i==j) ** a[i][j]='*'; ** elsea[i][j]='';}for(i=0;i<5;i++) {for(j=0;j<5;j++) printf("%c",a[i][j]); printf("\n");}}§6.3字符數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三30教師:趙軍富例2.輸出對(duì)角線和第一列為“*”的一個(gè)圖形。§6.3字

在C語言中,字符串是作為字符數(shù)組來處理的。同時(shí),為了測(cè)定字符串的實(shí)際長(zhǎng)度,在C語言規(guī)定了一個(gè)“字符串結(jié)束標(biāo)志”(在字符串的最后放有字符‘\0’),如一個(gè)字符串第10個(gè)字符為‘\0’,則此字符串的有效字符為9個(gè),即在遇到第一個(gè)字符‘\0’時(shí),表示字符串結(jié)束,由它前面的字符組成字符串。系統(tǒng)對(duì)字符串常量也自動(dòng)加一個(gè)‘\0’作為結(jié)束符,當(dāng)然在定義字符數(shù)組時(shí)應(yīng)估計(jì)實(shí)際字符串長(zhǎng)度。對(duì)字符數(shù)組初始化,可以用字符串常量來使字符數(shù)組初始化。如:charc[]={“Iamhappy”};

或 charc[]=“Iamhappy”;

此時(shí)系統(tǒng)自動(dòng)在串尾加‘\0’。四、字符串和字符串結(jié)束標(biāo)志§6.3字符數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三31教師:趙軍富在C語言中,字符串是作為字符數(shù)組來處理的。同

1、輸入輸出有兩種方式:①逐個(gè)字符輸入輸出。用“%c”②將整個(gè)字符串一次輸入輸出。用“%s”

2、輸出應(yīng)注意的問題:

charc[]={“china”}; printf(“%s”,c); ①輸出字符不包括結(jié)束符‘\0’ ②用“%s”格式輸出字符時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。 ③如果數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,也只輸出到‘\0’結(jié)束 ④如果一個(gè)字符數(shù)組中包含一個(gè)以上‘\0’,則遇到第一個(gè)‘\0’時(shí)輸出就結(jié)束。⒊輸入時(shí)應(yīng)注意: 在使用scanf函數(shù)時(shí),若輸入字符串,用“%s”格式,則后面跟數(shù)組名,且不帶“&”符號(hào),數(shù)組名指向該數(shù)組的起始地址。五、字符數(shù)組的輸入輸出§6.3字符數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三32教師:趙軍富1、輸入輸出有兩種方式:①逐個(gè)字符輸入輸出。用“%c”五1、gets(字符數(shù)組)作用:從終端輸入一個(gè)字符串到字符數(shù)組,并且得到一個(gè)函數(shù)值,該函數(shù)值是字符數(shù)組的起始地址。2、puts(字符數(shù)組)

作用:將以‘\0’結(jié)束的字符序列輸出到終端,使用puts函數(shù)輸出的字符串中可以包含轉(zhuǎn)義字符。main(){charstr[13];gets(str);puts(str);}Computer&C<回車>Computer&C3、strcat(concatenation)(字符數(shù)組1,字符數(shù)組2)作用:連接兩個(gè)字符數(shù)組中的字符串,把字符串2接到字符串1的后面,結(jié)果放到字符數(shù)組1中,函數(shù)調(diào)用后得到一個(gè)函數(shù)值----字符數(shù)組1的地址。說明:①字符數(shù)組1必須足夠大,以便容納連接后的新字符串。②連接時(shí),自動(dòng)取消數(shù)組1后的‘\0’,只在新串最后保留一個(gè)‘\0’。例題:Zfhs.c六、字符串處理函數(shù)§6.3字符數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三33教師:趙軍富1、gets(字符數(shù)組)main()3、strcat(con4、strcpy(字符數(shù)組1,字符串2)作用:是將字符串2拷貝到數(shù)組1中去。

說明: ①字符數(shù)組1必須足夠大,以便容納被拷貝的字符串。 ②“字符數(shù)組1”必須寫成數(shù)組名形式,“字符串2”可以是字符數(shù)組名,也可以是一個(gè)字符串常量。

如:strcpy(str1,str);和strcpy(str1,"China"); ③拷貝時(shí)連同字符串后面的‘\0’一起拷貝到字符數(shù)組1中; ④不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接賦給一個(gè)字符數(shù)組

如:str1=“China”為非法; ⑤可以用strcpy函數(shù)將字符串2中前面若干個(gè)字符拷貝到字符數(shù)組1中去;

§6.3字符數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三34教師:趙軍富4、strcpy(字符數(shù)組1,字符串2)§6.3字符數(shù)組的5、strcmp(字符串1,字符串2)

作用:

比較字符串1和字符串2

方法:對(duì)兩個(gè)字符串自左至右逐個(gè)相比,直到出現(xiàn)不同的字符或遇到‘\0’為止,如全部字符相同,則認(rèn)為相等;若出現(xiàn)不相同的字符,則以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn),比較的結(jié)果由函數(shù)值帶回。

字符串1=字符串2,函數(shù)值為0 字符串1>字符串2,函數(shù)值為一正整數(shù) 字符串1<字符串2,函數(shù)值為一負(fù)整(記憶方法:絕對(duì)值)6、strlen(字符數(shù)組)作用:測(cè)試字符串長(zhǎng)度的函數(shù),函數(shù)的值為字符串中的實(shí)際長(zhǎng)度,

不包括‘\0’在內(nèi)。7、strlwr(字符串)

將字符串中大寫字母換成小寫字母。8、strupr(字符串)

將字符串中小寫字母換成大寫字母。§6.3字符數(shù)組的定義和引用2010年4月21日星期三4月21日星期三4月21日星期三35教師:趙軍富5、strcmp(字符串1,字符串2)§6.3字符數(shù)組的定例2:輸入一行字符,統(tǒng)計(jì)有多少個(gè)單詞,單詞用空格分隔。如:Iamastudent.

#include"stdio.h" main() {charstring[81],c; inti,num=0,word=0; gets(string); for(i=0;(c=string[i])!='\0';i++) if(c=='')word=0; elseif(word==0) {word=1;num++;} printf("Thereare%dwordsintheline\n",num);}§6.4應(yīng)用實(shí)例2010年4月21日星期三4月21日星期三4月21日星期三36教師:趙軍富例2:輸入一行字符,統(tǒng)計(jì)有多少個(gè)單詞,單詞用空格分隔。例3.任輸入十個(gè)國(guó)家的名字,按由小到大排序。#include"stdio.h“main(){chara[10][20],b[20];inti,j;/*a數(shù)組定義為二位,列是代表每一個(gè)的名字*/for(i=0;i<10;i++)gets(a[i]);

for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(strcmp(a[i],a[j])>0){strcpy(b,a[i]);strcpy(a[i],a[j]);strcpy(a[j],b);}for(i=0;i<10;i++)printf("%s\n",a[i]);}§6.4應(yīng)用實(shí)例2010年4月21日星期三4月21日星期三4月21日星期三37教師:趙軍富例3.任輸入十個(gè)國(guó)家的名字,按由小到大排序。§6.4應(yīng)用實(shí)第6章習(xí)題1.下面不能把字符串:Hello!賦給數(shù)組的語句是A)charb1[10]={'H','e','l','l','o','!'};B)charb2[10];b2="Hello!";C)charb3[10];strcpy(b3,"Hello!");D)charb4[10]="Hello!";2、若二維數(shù)組a有m列,則a[I][j]前的元素個(gè)數(shù)為:

A)j*m+IB)I*m+jC)I*m+j-1D)I*m+j+13、下面程序段運(yùn)行結(jié)果是:

charc[5]={‘a(chǎn)’,’b’,’\0’,’c’,’d’,’\0’};printf(“%s”,c);A)‘a(chǎn)’’b’B)abC)abcD)ab\02010年4月21日星期三4月21日星期三4月21日星期三38教師:趙軍富第6章習(xí)題1.下面不能把字符串:Hello!賦給數(shù)組的4、以下對(duì)S的初始化,不正確的是:

A)chars[5]={“abc”}B)chars[5]={‘a(chǎn)’,‘b’,‘c’};C)chars[5]="";D)chars[5]=“abcdef”;5、有下面程序段:

chara[3],b[]=“china”; a=b;printf(“%s”,a);

則——A)運(yùn)行后輸出chinaB)運(yùn)行后輸出chC)運(yùn)行后輸出chiD)編譯出錯(cuò)第6章習(xí)題2010年4月21日星期三4月21日星期三4月21日星期三39教師:趙軍富4、以下對(duì)S的初始化,不正確的是:5、有下面程序段:第66、若定義二維數(shù)組inta[3][3]={1,2,3,4,5,6,7,8,9};

intk;則下列語句的輸出結(jié)果是:

for(k=0;k<3;k++)printf(“%d”,a[k,2-k]);

A)357B)369C)159D)1477、判斷字符串a(chǎn)和b是否相等,應(yīng)當(dāng)使用:

A)if(a==b)B)if(a=b)C)if(strcpy(a,b))D)if(strcmp(a,b))第6章習(xí)題2010年4月21日星期三4月21日星期三4月21日星期三40教師:趙軍富6、若定義二維數(shù)組inta[3][3]={1,2,38、讀程序,寫出正確結(jié)果:main(){chara[5]={‘*’,’*’,’*’,’*’,’*’}inti,j,k;charspace=‘’;for(i=0;i<5;i++){printf(“\n”);printf(“”); for(j=1;j<=i;j++)printf(“%c”,space);for(k=0;k<5;k++)printf(“%c”,a[k]);}}

*************************第6章習(xí)題2010年4月21日星期三4月21日星期三4月21日星期三41教師:趙軍富8、讀程序,寫出正確結(jié)果:*****第6章習(xí)題2010年9、讀程序,寫出正確結(jié)果:#include<stdio.h”;#include<string.h>main(){chara[80]=“AB”,b[80]=“LMNP”intI=0;strcat(a,b);while(a[I++]!=‘\0’)b[I]=a[I];puts(b);}答案:LBLMNP注意:當(dāng)b賦值時(shí),I的值已遞增即b[1]=a[1],而b[0]仍保持原來的值L第6章習(xí)題2010年4月21日星期三4月21日星期三4月21日星期三42教師:趙軍富9、讀程序,寫出正確結(jié)果:答案:第6章習(xí)題2010年4月2

10、用“篩法”求1~100以內(nèi)的素?cái)?shù)。#include"math.h"main(){inti,j,count=0,a[101];

for(i=1;i<=100;i++)a[i]=i;/*賦值*/

for(i=2;i<sqrt(100);i++)for(j=i+1;j<=100;j++){if(a[i]!=0&&a[j]!=0) if(a[j]%a[i]==0)a[j]=0;}

printf("\n");/*輸出*/

for(i=2;i<=100;i++){if(a[i]!=0){printf("%5d",a[i]);count++;} if(count%10==0)printf("\n");}printf("\ncount=%d",count);}第6章習(xí)題2010年4月21日星期三4月21日星期三4月21日星期三43教師:趙軍富10、用“篩法”求1~100以內(nèi)的素?cái)?shù)。第6章習(xí)題11、編一程序,將兩字符串連接起來,不用strcat函數(shù)。

main(){staticchars1[80],s2[80];inti=0,j=0;scanf("%s",s1);scanf("%s",s2);while(s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("%s\n",s1);}第6章習(xí)題2010年4月21日星期三4月21日星期三4月21日星期三44教師:趙軍富11、編一程序,將兩字符串連接起來,不用strcat函數(shù)。1、輸入N個(gè)數(shù)到數(shù)組中(N最多為100),選出所有大于N個(gè)數(shù)的平均值的那些數(shù)。2、編寫一個(gè)從鍵盤輸入10個(gè)學(xué)生的成績(jī),統(tǒng)計(jì)最高分、最低分及平均分。3、任輸入n個(gè)正整數(shù),將n個(gè)數(shù)按由小到大順序排序。4、任輸入20個(gè)正整數(shù),找出其中素?cái)?shù),并按由小到大排好序。5、輸入一個(gè)二維矩陣,求兩條對(duì)角線元素及周邊元素之

和及該二維數(shù)組元素的最小值。第6章習(xí)題2010年4月21日星期三4月21日星期三4月21日星期三45教師:趙軍富1、輸入N個(gè)數(shù)到數(shù)組中(N最多為100),選出所有大第6章6、編程輸出入下數(shù)組:0111110 -101110-1 -1-1010-1-1 -1-1-10-1-1-1 -1-1010-1-1 -101110-10111110提示:矩陣分四部分考慮第6章習(xí)題2010年4月21日星期三4月21日星期三4月21日星期三46教師:趙軍富6、編程輸出入下數(shù)組:提示:第6章習(xí)題2010年4月2C語言數(shù)組課件C語言數(shù)組課件數(shù)據(jù)類型基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型intfloatcharstring

intshortintlongint數(shù)組指針結(jié)構(gòu)體共用體double2010年4月21日星期三4月21日星期三4月21日星期三49教師:趙軍富數(shù)據(jù)類型基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型intfloatcharst當(dāng)變量個(gè)數(shù)少,且彼此獨(dú)立時(shí),采用變量先定義,后賦值,再使用。如:int

a,b,c;

a=5;b=10;c=23;

printf(“%d,%d,%d”,a,b,c);當(dāng)變量個(gè)數(shù)比較多,并且有內(nèi)在的關(guān)系時(shí),例如:全班有30個(gè)人,每人一個(gè)成績(jī)

如:intc1,c2,……,c30

(可以利用數(shù)組)

數(shù)組是怎么構(gòu)成的?一組有序數(shù)據(jù)的集合,各個(gè)元素屬于同一個(gè)類型,用統(tǒng)一的名稱標(biāo)識(shí)這一組數(shù),用下標(biāo)唯一地確定這組數(shù)中的每一個(gè)值,這就構(gòu)成了“數(shù)組”。數(shù)組的基本概念數(shù)組:有限個(gè)相同數(shù)據(jù)類型的數(shù)據(jù)分量的有序集合。2010年4月21日星期三4月21日星期三4月21日星期三50教師:趙軍富當(dāng)變量個(gè)數(shù)少,且彼此獨(dú)立時(shí),采用變量先定義,后賦值,再一、一維數(shù)組的定義格式:類型標(biāo)識(shí)符[長(zhǎng)度]所有元素為同一類型變量名,即數(shù)組名數(shù)組中所含元素的個(gè)數(shù)inta[10];由10個(gè)整數(shù)組成的數(shù)組,共同擁有數(shù)組名a[]2、數(shù)組長(zhǎng)度必須是整型量inta[2*3]說明:1、用方括號(hào)將數(shù)組的長(zhǎng)度括起來3、數(shù)組長(zhǎng)度也可以用常量表達(dá)式4、不能對(duì)長(zhǎng)度做動(dòng)態(tài)定義,或者不定義長(zhǎng)度如:intn;n=10;inta[n];§6.1一維數(shù)組的定義和使用例如:inta[5];2010年4月21日星期三4月21日星期三4月21日星期三51教師:趙軍富一、一維數(shù)組的定義格式:類型標(biāo)識(shí)符[長(zhǎng)度]所有元數(shù)組的三要素:(1)相同的數(shù)據(jù)類型(定義數(shù)組時(shí)規(guī)定)(2)有限的成員個(gè)數(shù)(定義數(shù)組時(shí)規(guī)定)(3)彼此有序的排列(引用數(shù)組元素時(shí)的下標(biāo))inta[5]inta[5];a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;§6.1一維數(shù)組的定義和使用2010年4月21日星期三4月21日星期三4月21日星期三52教師:趙軍富數(shù)組的三要素:(1)相同的數(shù)據(jù)類型(定義數(shù)組時(shí)規(guī)定)(2)有數(shù)據(jù)類型數(shù)組名[常量表達(dá)式]={初始化數(shù)據(jù)};格式:1.定義數(shù)組時(shí),對(duì)全部元素賦值

inta[5]={1,2,3,4,5};2.對(duì)部分元素賦值floatx[5]={1.9,2.0};x[0]=1.9;x[1]=2.0;3.若要對(duì)數(shù)組的全部元素初始化,則可省略數(shù)組的長(zhǎng)度inta[]={1,2,3,4};二、一維數(shù)組的初始化§6.1一維數(shù)組的定義和使用用{}包括所有初值,用逗號(hào)分隔各數(shù)值,且初值的個(gè)數(shù)不能大于數(shù)組長(zhǎng)度。按順序給前2個(gè)元素賦值,其余元素為均為0數(shù)組長(zhǎng)度=元素的個(gè)數(shù)2010年4月21日星期三4月21日星期三4月21日星期三53教師:趙軍富數(shù)據(jù)類型數(shù)組名[常量表達(dá)式]={初始化數(shù)據(jù)};格式:1三、一維數(shù)組元素的引用1、數(shù)組必須先定義,后賦值,再使用

2、數(shù)組中的元素必須逐一引用3、通過數(shù)組名及其元素的下標(biāo)引用定義:類型數(shù)組名[長(zhǎng)度]

如:

inta[10]引用:

數(shù)組名[下標(biāo)]

a[0],a[1],…a[9]為數(shù)組a[10]中的所有元素(1)下標(biāo)表示了元素在數(shù)組中的位置(2)下標(biāo)可以用表達(dá)式a[2*3]相當(dāng)于a[6]說明§6.1一維數(shù)組的定義和使用下標(biāo)范圍從0到長(zhǎng)度-12010年4月21日星期三4月21日星期三4月21日星期三54教師:趙軍富三、一維數(shù)組元素的引用1、數(shù)組必須先定義,后賦值,再使用例1:main(){inti;inta[10]={1,2,3,4,5,6,7,8,9,10};for(i=0;i<10;i++)printf("%3d",a[i]);}運(yùn)行結(jié)果:12345678910

§6.1一維數(shù)組的定義和使用inta[10];for(i=0;i<10;i++)scanf("%d",&a[i]);通過數(shù)組名和下標(biāo),引用數(shù)組中的每一個(gè)元素2010年4月21日星期三4月21日星期三4月21日星期三55教師:趙軍富例1:main()運(yùn)行結(jié)果:1234567例:有一個(gè)數(shù)組,內(nèi)有10個(gè)元素,求出最小的元素和它的下標(biāo)。71332668153206512inta[10]a[0]a[i]a[9]i=?1.定義兩個(gè)臨時(shí)變量min和k2.假定第一個(gè)元素就是最小的,min=a[0],k=03.用min與數(shù)組中的每一個(gè)元素a[i]比較,若a[i]比min小,將a[i]賦給min,同時(shí)將下標(biāo)i賦給k,否則,繼續(xù)比較?!?.1一維數(shù)組的定義和使用分析:2010年4月21日星期三4月21日星期三4月21日星期三56教師:趙軍富例:有一個(gè)數(shù)組,內(nèi)有10個(gè)元素,求出最小的元素和它的71332671332668153206512min=a[0]i=1i=2i=3i=4i=5i=6i=7i=8i=913<26min=a[1]k=1循3<13min=a[2]k=268>3min和k的值不變13320>3min和k的值不變1<3min=a[5],k=57>1min和k的值不變1&min53>1min和k的值不變12>1min和k的值不變65>1min和k的值不變min=1k=5§6.1一維數(shù)組的定義和使用2010年4月21日星期三4月21日星期三4月21日星期三57教師:趙軍富2671332668153206512min=a[0]i=1main(){inti,a[10],min,k;

for(i=0;i<10;i++)scanf(“%d”,&a[i]);min=a[0];k=0;for(i=1;i<10;i++)if(min>a[i]){min=a[i];k=i;

}

printf(“%d,%d”,k,min);}循環(huán)輸入10個(gè)數(shù)循環(huán)找出最小的輸出最小值和原始下標(biāo)2010年4月21日星期三4月21日星期三4月21日星期三58教師:趙軍富main()循環(huán)輸入10個(gè)數(shù)循環(huán)找出最小的輸出最小值和原始例1.

將6個(gè)實(shí)數(shù)由小到大排序。58947258947215894722589472348957244895725第一輪結(jié)束:289574289574第一輪249875第二輪245987第三輪245798第四輪245789第五輪結(jié)果:245789算法一:選擇排序法選擇排序思路:將數(shù)組中的每一個(gè)元素和其后面所有的元素進(jìn)行比較,如果某一個(gè)元素小于該數(shù),將互換位置。第一輪開始:2010年4月21日星期三4月21日星期三4月21日星期三59教師:趙軍富例1.將6個(gè)實(shí)數(shù)由小到大排序。589#include<stdio.h>main(){ inta[6]={5,8,9,4,7,2}; inti,j,t; for(i=0;i<5;i++)//i為比較的第幾輪

{ for(j=i+1;j<6;j++)//j為每輪的第幾遍

{ if(a[i]>a[j]) { t=a[i];a[i]=a[j];a[j]=t; } } } for(i=0;i<6;i++)//將比較后的記過輸出來

{ printf("%5d",a[i]); }}程序代碼一:2010年4月21日星期三4月21日星期三4月21日星期三60教師:趙軍富#include<stdio.h>程序代碼一:2010年4#include<stdio.h>main(){inta[6]={5,8,9,4,7,2},i,j,t,k;/*k為數(shù)組的下標(biāo)*/for(i=0;i<5;i++)/*i循環(huán)比較的輪數(shù)*/{k=i;for(j=i+1;j<6;j++)/*每輪比較次數(shù)*/if(a[k]>a[j])k=j;/*記下較小的元素的下標(biāo)*/t=a[i];a[i]=a[k];a[k]=t;/*每輪結(jié)束后交換*/}for(i=0;i<6;i++)printf("a[%d]=%d\n",i,a[i]);}程序代碼二:2010年4月21日星期三4月21日星期三4月21日星期三61教師:趙軍富#include<stdio.h>程序代碼二:2010年4算法二:冒泡排序冒泡法的思路:將相鄰兩個(gè)數(shù)比較,如果相鄰的兩個(gè)值是升序排列的,就保持原樣,如果是降序排列的,就交換它們的值。(實(shí)質(zhì):大的沉下去,小的浮上來)

start:a[0]a[1]

a[2]

a[3]a[4]

a[5]

a[6]a[7]257298942341611

times:22957

42

34

16

1

89

2

times:

229

42

34

16

157

89

3

times:

2

29

34

16

1

42

57

89

4

times:229

16

134

425789

5

times:

216129

34

425789

6

times:

2116

29

34

42

57

89

7

times:

1216

29

34

42

57

892010年4月21日星期三4月21日星期三4月21日星期三62教師:趙軍富算法二:冒泡排序冒泡法的思路:將相鄰兩個(gè)數(shù)比較,如果相鄰main(){inta[10]={2,57,29,89,42,34,16,1};intpass,time,temp,xb;for(pass

=1;pass

<=9;pass

++)/*pass是循環(huán)比較的趟數(shù)*/

for(time

=0;time

<=9-pass;time

++)/*time每趟比較的次數(shù),同時(shí)作為數(shù)組的元素下標(biāo)*/if(a[time]>a[time+1])/*判斷每相鄰兩個(gè)元素下標(biāo)*/{temp

=a[time];a[time]=a[time+1];a[time+1]=temp;}

for(xb=0;xb<10;xb++)printf(“a[%d]=%d\n”,xb,a[xb]);

}程序代碼一:2010年4月21日星期三4月21日星期三4月21日星期三63教師:趙軍富main()程序代碼一:2010年4月21日星期三4月21

#include

<stdio.h>

#define

SIZE

8

main()

{

int

a[SIZE]={2,57,29,89,42,34,16,1};

int

i,

pass,

hold;

clrscr();

for(i=0;i<=SIZE-1;i++)

printf("%4d",

a[i]);

printf("\n");

for(pass=1;pass<=SIZE-1;pass++)

/*比較趟數(shù)*/

for(i=0;i<=(SIZE-1-1);i++)/*比較一趟*/

if(a[i]>a[i+1]){

hold=a[i];

a[i]=a[i+1];

a[i+1]=hold;}

for(i=0;i<=SIZE-1;i++)printf("%4d",a[i]);

}

程序代碼二:2010年4月21日星期三4月21日星期三4月21日星期三64教師:趙軍富

#include

<stdio.h>程序代碼二:20§6.2二維數(shù)組的定義和引用當(dāng)一個(gè)一維數(shù)組中的每個(gè)元素本身又是一個(gè)一維數(shù)組時(shí),該數(shù)組構(gòu)成“二維數(shù)組”。一、二維數(shù)組的定義格式:類型標(biāo)識(shí)符[長(zhǎng)度1][長(zhǎng)度2]

如:inta[4][4]行列a[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]a[3][0]a[3][1]a[3][2]a[3][3]a[0]a[1]a[2]a[3]一維數(shù)組a[4]二維數(shù)組a[4][4]2010年4月21日星期三4月21日星期三4月21日星期三65教師:趙軍富§6.2二維數(shù)組的定義和引用當(dāng)一個(gè)一維數(shù)組說明:1.二維數(shù)組元素需要兩個(gè)下標(biāo)表示例:inta[4][4]表示數(shù)組a中有4行4列共16個(gè)數(shù)據(jù)2.二維數(shù)組在存儲(chǔ)空間中是按行優(yōu)先存儲(chǔ)a[0][0]a[0][1]a[0][2]a[2][3]…..a[0][3]第一行a[0][0]a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論