C語(yǔ)言程序設(shè)計(jì)教程(第2版)-課件 第6章 數(shù)組_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)教程(第2版)-課件 第6章 數(shù)組_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)教程(第2版)-課件 第6章 數(shù)組_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)教程(第2版)-課件 第6章 數(shù)組_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)教程(第2版)-課件 第6章 數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩54頁(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ù)組的定義和引用基本概念1、前面使用的數(shù)據(jù)類型屬于基本類型(整型、實(shí)型、字符型)存儲(chǔ)特點(diǎn):每個(gè)變量單獨(dú)存儲(chǔ),稱為簡(jiǎn)單變量。如:x=‘a(chǎn)’;y1=0;y2=-2*x;各變量之間單獨(dú)存放,無(wú)任何聯(lián)系。2、構(gòu)造類型的基本概念構(gòu)造類型:由基本類型構(gòu)造而成的(如數(shù)組、結(jié)構(gòu)體、共同體、枚舉型)。如:

inta[10]; floatb[3][4]; structstudent { intnum; charname[20]; charsex; intage; floatscore; charaddr[30]; }student1,student2;3、數(shù)組概念數(shù)組:按序排列的具有相同類型的變量的集合。用一符號(hào)名(數(shù)組名)來(lái)表示這一組數(shù);用數(shù)組名后跟下標(biāo)來(lái)唯一地確定數(shù)組中的元素;數(shù)組的首地址、數(shù)組元素的類型和個(gè)數(shù)(數(shù)組長(zhǎng)度)。一維數(shù)組一、定義一維數(shù)組

類型名數(shù)組名1[exp],數(shù)組名2[exp],…

其中:exp為常量表達(dá)式如: intA[10],b[5];charc[8]; floatX[20],y[4*M+1],w[5];(M為符號(hào)常量)注意:1)數(shù)組名命名規(guī)則和簡(jiǎn)單變量名相同;2)數(shù)組名后只能是方括號(hào)括起來(lái)的常量表達(dá)式(常量和符號(hào)常量);3)常量表達(dá)式的值確定數(shù)組元素的個(gè)數(shù)。此時(shí)數(shù)組類型為整型,每個(gè)數(shù)據(jù)元素相當(dāng)于一個(gè)整型變量,占2個(gè)字節(jié)(TurboC中)a[0]a[1]a[2]a[3]...a[99]86927752...94低地址

高地址二、一維數(shù)組的存儲(chǔ)用連續(xù)的內(nèi)存單元存放各個(gè)元素。如:inta[100];總字節(jié)數(shù)=sizeof(基本類型)*數(shù)組元素個(gè)數(shù)三、一維數(shù)組的引用數(shù)組必須先定義后引用;C語(yǔ)言規(guī)定只能逐個(gè)引用數(shù)組元素,而不能一次引用整個(gè)數(shù)組。引用的一維數(shù)組元素的一般形式:數(shù)組名[下標(biāo)]

/*下標(biāo)可以是整型常量或整型表達(dá)式,從0開(kāi)始,最大下標(biāo)值為數(shù)組元素個(gè)數(shù)-1*/如:a[0]=a[5]+a[7]-a[2*3]例:讀程序,寫出程序輸出的結(jié)果。#include<stdio.h>intmain(){inti,a[10];for(i=0;i<=9;i++)a[i]=i;for(i=9;i>=0;i--)printf(“%d”,a[i]);printf(“\n”);}數(shù)組元素的下標(biāo)常用循環(huán)變量控制。i=0a[0]=0i=1a[1]=1……i=9a[9]=9四、一維數(shù)組的初始化1)在定義數(shù)組時(shí)對(duì)數(shù)組元素賦初值如:inta[4]={1,2,3,4};

等價(jià)于a[0]=1,a[1]=2,a[2]=3,a[3]=42)給一部分元素賦初值如:intb[10]={1,2};

等價(jià)于:b[0]=1,b[1]=2,b[2]=0,…,b[9]=0四、一維數(shù)組的初始化3)若對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。如:intc[]={1,2,3,4,5};//自動(dòng)定義c數(shù)組長(zhǎng)度為5

注意:若被定義數(shù)組長(zhǎng)度與提供初值的個(gè)數(shù)不相同,則數(shù)組長(zhǎng)度不能省略。如:inta[10]={1,2,3,4,5};例:數(shù)組的初始化#include<stdio.h>intmain(){inta[5]={1,2,3,4,5};intb[5]={1,2,3};intc[]={1,2,3,4,5};intd[5];inti;for(i=0;i<5;i++)printf(“%d”,a[i]); printf(“\n”);for(i=0;i<5;i++)printf(“%d”,b[i]); printf(“\n”);for(i=0;i<5;i++)printf(“%d”,c[i]); printf(“\n”);for(i=0;i<5;i++)printf(“%d”,d[i]); printf(“\n”);}例:已知一個(gè)含10個(gè)元素的整型數(shù)組,求該數(shù)組的最大值、最小值和平均值。#include<stdio.h>intmain(){ inta[10]={9,9,8,3,7,15,6,1,3,2}; intmax,min,sum,i; floatave; max=min=sum=a[0];

for(i=1;i<=9;++i) { if(max<a[i]) max=a[i]; }

for(i=1;i<=9;++i) { if(min>a[i]) min=a[i]; }

例:已知一個(gè)含10個(gè)元素的整型數(shù)組,求該數(shù)組的最大值、最小值和平均值。

for(i=1;i<=9;++i) { sum+=a[i];} ave=sum/10.0; printf("Themaxis%d\n",max); printf("Theminis%d\n",min); printf("Theaverageis%f\n",ave);}例:已知一個(gè)含10個(gè)元素的整型數(shù)組,求該數(shù)組的最大值、最小值和平均值。#include<stdio.h>intmain(){ inta[10]={9,9,8,3,7,15,6,1,3,2}; intmax,min,sum,i; floatave; max=min=sum=a[0]; for(i=1;i<=9;++i) { if(max<a[i]) max=a[i]; if(min>a[i]) min=a[i]; sum+=a[i];} ave=sum/10.0; printf("Themaxis%d\n",max); printf("Theminis%d\n",min); printf("Theaverageis%f\n",ave);}例:統(tǒng)計(jì)選票。設(shè)候選人有8人,其編號(hào)為1~8,約定0為統(tǒng)計(jì)結(jié)束標(biāo)志。分析:若用簡(jiǎn)單變量做,需要8個(gè)變量分別存放8個(gè)候選人的票數(shù);讀入一張選票,則進(jìn)行判斷,累加。#include<stdio.h>intmain(){intx,n1,n2,n3,n4,n5,n6,n7,n8;printf(“inputnumber:”);scanf(“%d”,&x);while(x){if(x==1)n1+=1;if(x==2)n2+=1;

…if(x==8)n8+=1;

printf(“inputnumber:”);scanf(“%d”,&x);

}

…}intx,n1,n2,n3,n4,n5,n6,n7,n8;

n1=n2=n3=n4=n5=n6=n7=n8=0;用數(shù)組統(tǒng)計(jì):定義一個(gè)數(shù)組n[9]n[1]元素中存放編號(hào)為1的候選人票數(shù);

n[2]元素中存放編號(hào)為2的候選人票數(shù);

……n[8]元素中存放編號(hào)為8的候選人票數(shù);數(shù)組元素的下標(biāo)與要統(tǒng)計(jì)的候選人的編號(hào)相吻合,故可直接采用:n[x]=n[x]+1#include<stdio.h>intmain(){intx,n[9]={0};printf(“inputnumber:”);scanf(“%d”,&x);while(x){n[x]=n[x]+1;printf(“inputnumber:”);scanf(“%d”,&x);}for(x=1;x<=8;x++){printf(“No.%d=%d”,x,n[x]);if(x%2==0)printf(“\n”);}}

利用數(shù)組作為一組計(jì)數(shù)器,通過(guò)將統(tǒng)計(jì)對(duì)象的值與存放該統(tǒng)計(jì)值的下標(biāo)聯(lián)系起來(lái),這樣既可以使程序簡(jiǎn)潔,又提高程序效率。用起泡法對(duì)幾個(gè)數(shù)排序(由小到大)。起泡法的思路:將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前面。第一趟比較經(jīng)過(guò)第一趟(共5次比較與交換)后,最大的數(shù)9已“沉底”。

如果有n個(gè)數(shù),則要進(jìn)行n-1趟比較。在第1趟比較中要進(jìn)行n-1次兩兩比較,在第j趟比較中要進(jìn)行n-j次兩兩比較。第二趟比較分析可知:要排序的數(shù)必須放入數(shù)組中;用二重循環(huán)控制排序過(guò)程:外循環(huán)j控制比較趟數(shù)(n-1趟)內(nèi)循環(huán)i控制一趟比較的次數(shù)(n-j次)#include<stdio.h>intmain(){inta[11],i,j,t;printf(″input10numbers:\n″);for(i=1;i<=10;i++)scanf("%d",&a[i]);printf("\n");for(j=1;j<=10-1;j++)for(i=1;i<=10-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(″thesortednumbers:\n″);for(i=1;i<=10;i++)printf(″%d″,a[i]);printf(″\n″);}input10numbers:10481265-76100-45123↙

thesortednumbers:-76-4501481265100123二維數(shù)組一、二維數(shù)組的定義類型名數(shù)組名[exp1][exp2],…如:inta[3][4],b[4][M];(M是符號(hào)常量)

定義:a為3*4(3行4列)的整型數(shù)組

b為4*M(4行M列)的整型數(shù)組不能寫成inta[3,4],b[4,M];可把a(bǔ)[3][4]理解為3*4的矩陣

二維數(shù)組可以看作一種特殊的一維數(shù)組:它的元素又是一個(gè)一維數(shù)組。如:inta[3][4];

可將a數(shù)組看作是一個(gè)一維數(shù)組,它有3個(gè)元素:a[0]、a[1]、a[2],每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組。

二維數(shù)組可以看作一種特殊的一維數(shù)組:它的元素又是一個(gè)一維數(shù)組。如:inta[3][4];

可將a數(shù)組看作是一個(gè)一維數(shù)組,它有3個(gè)元素:a[0]、a[1]、a[2],每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組。a[0] a[0][0] a[0][1] a[0][2] a[0][3]a[1] a[1][0] a[1][1] a[1][2] a[1][3]a[2] a[2][0] a[2][1] a[2][2] a[2][3]二、二維數(shù)組的存儲(chǔ)二維數(shù)組從概念上可理解為行-列矩陣,但存儲(chǔ)器是一維的,需按一定規(guī)則轉(zhuǎn)換。在內(nèi)存中,二維數(shù)組中元素排列的順序是---按行存放:先順序存放第一行的元素,再存放第二行的元素……

(右邊下標(biāo)比左邊下標(biāo)變化快)。地址

數(shù)組元素b[0][0]b[0][1]b[0][2]b[1][0]b[1][1]b[1][2]b[2][0]b[2][1]b[2][2]3000H3002H3004H3006H3008H300AH300CH300EH3010H例:整型數(shù)組intb[3][3]={{1,2,3},{4,5,6},{7,8,9}};123456789三、二維數(shù)組的引用二維數(shù)組的元素的引用形式:

數(shù)組名[下標(biāo)][下標(biāo)]如:inta[2][4],b[5][3]; a[2-1][2*2-1] b[1][2]=a[1][3]/2;下標(biāo)可以是整型表達(dá)式

注意下標(biāo)的最大取值,即注意數(shù)組定義和數(shù)組引用的區(qū)別:如:inta[3][4];則下標(biāo)下限值是a[0][0]

下標(biāo)上限值是a[2][3]四、二維數(shù)組的初始化(按行存放)1)按存放順序賦如:intx[2][3]={1,2,3,4,5,6};

等價(jià)于: x[0][0]=1,x[0][1]=2,x[0][2]=3 x[1][0]=4,x[1][1]=5,x[1][2]=62)按行賦如:intx[2][3]={{1,2,3},{4,5,6}};3)部分賦如:intx[2][3]={1,2,4};/*以存放順序賦*/等價(jià)于: x[0][0]=1,x[0][1]=2,x[0][2]=4 x[1][0]=0,x[1][1]=0,x[1][2]=0如:intx[2][3]={{1,2},{4}};/*以行賦*/等價(jià)于: x[0][0]=1,x[0][1]=2,x[0][2]=0 x[1][0]=4,x[1][1]=0,x[1][2]=0問(wèn):intx[2][3]={{6,2},{5,0}};每個(gè)元素是多少?4)省略第一維長(zhǎng)度如:intx[][3]={1,2,3,4,5,6,7};等價(jià)于: x[0][0]=1,x[0][1]=2,x[0][2]=3, x[1][0]=4,x[1][1]=5,x[1][2]=6, x[2][0]=7,x[2][1]=0,x[2][2]=0問(wèn):能否省略第二維的長(zhǎng)度?例:二維數(shù)組的輸入與輸出#include<stdio.h>intmain(){inta[3][3],i,j;

for(i=0;i<=2;i++){for(j=0;j<=2;j++)scanf(“%d”,&a[i][j]); }for(i=0;i<=2;i++){for(j=0;j<=2;j++)printf(“%2d”,a[i][j]);printf(“\n”);}}i=0a[0][0]=1a[0][1]=2a[0][2]=3i=1a[1][0]=4a[1][1]=5a[1][2]=6i=2a[2][0]=7a[2][1]=8a[2][2]=9若輸入123456789,則結(jié)果為?例:二維數(shù)組的輸入與輸出#include<stdio.h>intmain(){inta[3][3],i,j;

for(i=0;i<=2;i++){for(j=0;j<=2;j++)scanf(“%d”,&a[i][j]); }for(i=0;i<=2;i++){for(j=0;j<=2;j++)printf(“%2d”,a[i][j]);printf(“\n”);}}

一般二維數(shù)組的處理用二重循環(huán)來(lái)實(shí)現(xiàn),用循環(huán)變量的值控制數(shù)組元素的下標(biāo)。#include<stdio.h>intmain(){inta[3][3],i,j;for(i=0;i<=2;i++){for(j=0;j<=2;j++)scanf(“%d”,&a[j][i]);}for(i=0;i<=2;i++){for(j=0;j<=2;j++)printf(“%2d”,a[i][j]);printf(“\n”);}}

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

printf(“%5d”,a[i][i]);123456789147258369i=0a[0][0]=1a[1][0]=2a[2][0]=3i=1a[0][1]=4a[1][1]=5a[2][1]=6i=2a[0][2]=7a[1][2]=8a[2][2]=9例:通過(guò)循環(huán)按行順序?yàn)橐粋€(gè)5×5的二維數(shù)組a賦1到25的自然數(shù),然后求所有元素的總和,并按行輸出該數(shù)組左下半三角的元素。1、對(duì)二維數(shù)組賦值1~252、求所有元素的總和3、輸出數(shù)組左下半三角的元素若用i代表行下標(biāo),j代表列下標(biāo),即i>=j元素輸出。#include<stdio.h>intmain(){inta[5][5],i,j,k=1,s=0;for(i=0;i<=4;i++){for(j=0;j<=4;j++){a[i][j]=k;k++;}}for(i=0;i<=4;i++){for(j=0;j<=4;j++){s=s+a[i][j];}}for(i=0;i<=4;i++){for(j=0;j<=4;j++){if(i>=j)printf(“%5d”,a[i][j]);}printf(“\n”);}}#include<stdio.h>intmain(){inta[5][5],i,j,k=1,s=0;for(i=0;i<=4;i++){for(j=0;j<=4;j++){a[i][j]=k;k++;s=s+a[i][j];if(i>=j)printf(“%5d”,a[i][j]);}printf(“\n”);}printf(“s=%d\n”,s);}例:將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二維數(shù)組中(轉(zhuǎn)置)算法:1)a數(shù)組初始化(或賦值)并輸出2)用二重循環(huán)進(jìn)行轉(zhuǎn)置b[j][i]=a[i][j]3)輸出b數(shù)組例如:a=12314456b=2536#include<stdio.h>intmain(){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″);

}}

arraya:123456arrayb:1425

3

6

字符數(shù)組一、定義字符數(shù)組在C語(yǔ)言中,沒(méi)有專門的字符串變量,而是用一個(gè)一維數(shù)組來(lái)存放一個(gè)字符串,每個(gè)元素存放一個(gè)字符;字符數(shù)組是數(shù)組的一個(gè)特殊情況,但定義方法與前面介紹的類似。如:charc[10];c[0]=‘I’;c[1]=‘’;c[2]=‘a(chǎn)’;c[3]=‘m’;c[4]=‘’;c[5]=‘h’;c[6]=‘a(chǎn)’;c[7]=‘p’;c[8]=‘p’;c[9]=‘y’;二、字符數(shù)組的初始化1)按元素賦

charc[10]={’s’,’t’,’o’,’r’,’e’};注意:在C語(yǔ)言中,將字符串作為字符數(shù)組來(lái)處理,即用一個(gè)一維數(shù)組來(lái)存放一個(gè)字符串。如:c[10]存放字符串“store”;為了測(cè)定實(shí)際字符串長(zhǎng)度,C語(yǔ)言規(guī)定了一個(gè)“字符串結(jié)束標(biāo)志”,即‘\0’,遇到字符‘\0’時(shí),表示字符串結(jié)束。(定義字符數(shù)組的長(zhǎng)度與字符串長(zhǎng)度是兩個(gè)概念)2)使用字符串常量給字符數(shù)組賦初值例:charc[6]={“china”};charc[6]=“china”;charc[]=“china”;注意:以字符串方式賦值時(shí),必須保證數(shù)組元素個(gè)數(shù)>=字符個(gè)數(shù)+1(字符串后面自動(dòng)加上一個(gè)’\0’)例:字符數(shù)組初始化#include<stdio.h>intmain(){chara[7]={‘a(chǎn)’,’p’,’p’,’l’,’e’};charb[7]={“apple”};charc[7];inti;for(i=0;i<=6;i++)printf(“%6d%6d%6d\n”,a[i],b[i],c[i]);}數(shù)組初始化后,剩余的元素均為\0。例:用一字符串給字符數(shù)組賦初值,然后打印出各元素的ASCII編碼值。#include<stdio.h>intmain(){charstr[]=“agirl”;inti=0;while(str[i]!=‘\0’){printf(“%c=%d\n”,str[i],str[i]);++i;}printf(“%c=%d\n”,str[i],str[i]);}agirl\0str[0]str[1]str[2]字符串的引用與輸入輸出

對(duì)于字符數(shù)組,在程序中既可以逐個(gè)引用字符串中的單個(gè)字符(數(shù)組元素),也可以一次引用整個(gè)字符串(數(shù)組)。1)逐個(gè)字符數(shù)組元素輸入輸出:用%c格式符描述例:chara[10];for(i=0;i<=9;i++)scanf(“%c”,&a[i]);printf(“%c%c%c”,a[0],a[2],a[3]);2)整個(gè)字符串(數(shù)組)輸入輸出:用%s格式符描述如:chara[10];scanf(“%s”,a);printf(“%s”,a);注意:用%s輸出,無(wú)論數(shù)組元素有多少個(gè)只要遇到“\0”就結(jié)束。如:charstar[10]={“***”};printf(“%s\n”,star);輸入的字符串應(yīng)短于已定義的字符數(shù)組的長(zhǎng)度。2)整個(gè)字符串(數(shù)組)輸入輸出:用%s格式符描述如:chara[]=“china”;scanf(“%s”,a);printf(“%s”,a);注意:用%s輸出,無(wú)論數(shù)組元素有多少個(gè)只要遇到“\0”就結(jié)束。如:charstar[3][4]={{“*”},{“**”},{“***”}};printf(“%s\n%s\n%s\n”,star[0],star[1],star[2]);******

如果利用一個(gè)scanf函數(shù)輸入多個(gè)字符串,則在輸入時(shí)以空格分隔。例如:charstrl[5],str2[5],str3[5];scanf(“%s%s%s”,str1,str2,str3);輸入數(shù)據(jù):Howareyou?數(shù)組中未被賦值的元素的值自動(dòng)置’\0’。

用%s輸入時(shí),遇到空格或回車便認(rèn)為一個(gè)字符串結(jié)束。charstr[13];scanf(“%s”,str);printf(“%s”,str);說(shuō)明:(1)用“%s”格式符輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。(2)如果數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,也只輸出到遇‘\0’結(jié)束。(3)輸出字符不包括結(jié)束符‘\0’。(4)如果一個(gè)字符數(shù)組中包含一個(gè)以上‘\0’,則遇第一個(gè)‘\0’時(shí)輸出就結(jié)束。(5)可以用scanf函數(shù)輸入一個(gè)字符串。字符串處理函數(shù)1)gets(字符數(shù)組名)從鍵盤輸入一個(gè)字符串(以回車結(jié)束)放到數(shù)組中,并且得到一個(gè)函數(shù)值,該函數(shù)值是字符數(shù)組的起始地址。如:gets(str);2)puts(字符數(shù)組名/字符串)將數(shù)組中的字符串(以’\0’結(jié)束的字符序列)輸出到終端上,輸完換行。即puts(str);與printf(“%s\n”,str);等價(jià),puts(“OK!”);與printf(“%s\n”,”O(jiān)K!”);等價(jià)。#include<stdio.h>#include<string.h>3)strcpy(字符數(shù)組1,字符串/字符數(shù)組2)將字符串/字符數(shù)組2中的字符串拷貝到字符數(shù)組1中。注意:字符數(shù)組1的長(zhǎng)度>=字符數(shù)組2/字符串的長(zhǎng)度;拷貝時(shí)連同’\0’一起拷貝;不能把字符串或字符數(shù)組直接賦給一個(gè)字符數(shù)組。如:charstr[6];str=“China”;/*錯(cuò)誤,str表示一個(gè)地址*/str[0]=‘C’;str[1]=‘h’;strcpy(str,”China”);#include<stdio.h>#include<string.h>intmain(){chars1[40],s2[40];printf(“請(qǐng)輸入串s1:”);

scanf("%s",s1);strcpy(s2,s1);printf(“復(fù)制的串s2:”);

printf("%s\n",s2);}gets(s1);4)strcat(字符數(shù)組1,字符串/字符數(shù)組2)將字符串或字符數(shù)組2連接到字符串1的后面,并放在字符數(shù)組1中。#include<string.h>#include<stdio.h>intmain(){charstr1[40],str2[10],str3[10];gets(str1);gets(str2);gets(str3);strcat(str1,str2);strcat(str1,str3);puts(str1);}5)strcmp(字符數(shù)組1/字符串1,字符數(shù)組2/字符串2)字符串1>字符串2時(shí),結(jié)果為正數(shù);

x=strcmp(“abc”,”ABC”);字符串1=字符串2時(shí),結(jié)果為0;

x=strcmp(“AX”,”AX”);字符串1<字符串2時(shí),結(jié)果為負(fù)數(shù)。

x=strcmp(“1000”,”2”);注意:對(duì)兩個(gè)字符串的比較,不能用以下形式

str1==str2或str1>str2只能用strcmp(str1,str2)>0或==0或<0來(lái)判斷。字符串的比較、拷貝、連接都必須用函數(shù)。#include<stdio.h>#include<string.h>intmain(){chars1[40],s2[40];inti;printf(“輸入字符串s1:”);gets(s1);printf(“輸入字符串s2:”);gets(s2);i=strcmp(s1,s2);if(i==0)printf(“輸入的兩字符串相等”);

elseif(i>0)printf(“字符串s1>s2”);

elseprintf(“字符串s1<s2”);

printf(“\n”);}6)strlen(字符數(shù)組名/字符串)

測(cè)試字符串長(zhǎng)度(不含’\0’)例:strlen(“china”)值為56)strlen(字符數(shù)組名/字符串)

測(cè)試字符串長(zhǎng)度(不含’\0’)例:strlen(“china”)值為5#include<stdio.h>#include<string.h>intmain(){chars[40];inti;printf(“Enterastring:\n”);gets(s);i=strlen(s);printf(“串長(zhǎng)=%d\n”,i);for(;i>=0;i--)putchar(s[i]);printf(“\n”);}作業(yè)1:1、使用數(shù)組編程實(shí)現(xiàn):統(tǒng)計(jì)全班某門功課期末考試的平均分和最高分。(設(shè)全班人數(shù)10人)2、編程實(shí)現(xiàn):數(shù)組a包含10個(gè)整數(shù),把a(bǔ)中所有的后項(xiàng)除以前項(xiàng)之商存入數(shù)組b,并按每行3個(gè)元素的格式輸出數(shù)組b。作業(yè)1:1、使用數(shù)組編程實(shí)現(xiàn):統(tǒng)計(jì)全班某門功課期末考試的平均分和最高分。(設(shè)全班人數(shù)10人)2、編程實(shí)現(xiàn):已知數(shù)組a有10個(gè)元素且均為正整數(shù),求a中偶數(shù)的個(gè)數(shù)和偶數(shù)的平均值。#include<stdio.h>intmain(){inti=0,a[10],max=0;floatsum=0;for(i=0;i<=9;i++)scanf(“%d”,&a[i]);for(i=0;i<=9;i++)sum=sum+a[i];for(i=0;i<=9;i++)if(max<=a[i])max=a[i];printf(“平均分為%f,最高分為%d”,sum/10,max);}#include<stdio.h>intmain(){inta[10]={2,3,4,6,8,5,9,10,5,8},i,t=0,sum=0;for(i=0;i<=9;i++)if(a[i]%2==0){t++;sum=sum+a[i];}printf(“偶數(shù)的個(gè)數(shù)是%d,偶數(shù)的平均值是%f”,t,(float)sum/t);}#include<stdio.h>intmain(){inta[10],b[10];for(i=0;i<=9;i++)scanf(“%d”,&a[i]);for(i=1;i<=9;i++){b[i]=a[i+1]/a[i];printf(“%d”,b[i]);if(i%3==0)printf(“\n”);}}作業(yè)2:1、編程實(shí)現(xiàn):從鍵盤輸入一個(gè)字符,找出該字符在已知字符串”Hello,world!”中第一次出現(xiàn)的位置。若不在該字符串中,則打印”該字符不在已知字符串中”。2、編程實(shí)現(xiàn):通過(guò)循環(huán)按行順序?yàn)橐粋€(gè)5×5的二維數(shù)組a賦1到25的自然數(shù),然后求所有元素的總和,并按行輸出該數(shù)組左下半三角的元素。作業(yè)2:1、編程實(shí)現(xiàn):已知數(shù)組a有10個(gè)元素且均為正整數(shù),求a中偶數(shù)的個(gè)數(shù)和偶數(shù)的平均值。2、編程實(shí)現(xiàn):從鍵盤輸入一個(gè)字符,找出該字符在已知字符串”Hello,world!”中第一次出現(xiàn)的位置。若不在該字符串中,則打印”該字符不在已知字符串中”。#include<stdio.h>intmain(){inta[10]={2,3,4,6,8,5,9,10,5,8},i,t=0,sum=0;for(i=0;i<=9;i++){if(a[i]%2==0){t++;sum=sum+a[i];}}printf(“偶數(shù)的個(gè)數(shù)是%d,偶數(shù)的平均值是%f”,t,(float)sum/t);}Hello,world!\0s[0]s[1]s[2]s[12]若輸入字符與s[0]相等,則在第1個(gè)位置若輸入字符與s[1]相等,則在第2個(gè)位置…….若輸入字符與s[i]相等,則在第i+1個(gè)位置若從前掃描到最后還沒(méi)找到該字符,即搜索到\0還沒(méi)找到。#include<stdio.h>intmain(){chars[13]=“Hello,world!”,a;inti=0;scanf(“%c”,&a);while(s[i]!=‘\0’){if(a==s[i]){printf(“該字符位于第%d位”,i+1);break;}elsei++;}if(i==12)printf(“該字符不在字符串中!”);}#include<stdio.h>intmain(){inta[5][5],i,j,k=1;for(i=0;i<=4;i++){for(j=0;j<=4;j++){a[i][j]=k;k++;if(i>=j)printf(“%5d”,a[i][j]);}printf(“\n”);}}作業(yè)3:1、編程實(shí)現(xiàn):已知數(shù)組a有10個(gè)元素且均為正整數(shù),求a中偶數(shù)的個(gè)數(shù)和偶數(shù)的平均值。2、編程實(shí)現(xiàn):已知數(shù)組a是一個(gè)4*4的二維數(shù)組,首先以行列的形式輸出該數(shù)組,再檢查該數(shù)組是否對(duì)稱(即對(duì)所有i和j都有a[i][j]=a[j][i])并輸出相應(yīng)的信息。#include<stdio.h>intmain(){inta[4][4]={{2,3,4,6},{8,5,9,10},{5,8,6,8},{3,4,7,8}},i,j,flag=0;for(i=0;i<=3;i++){for(j=0;j<=3;j++){printf(“%5d”,a[i][j]);if(a[i][j]==a[j][i])continue;elseflag=1;}printf(“\n”);}if(flag==0)printf(“對(duì)稱”);

elseprintf(“不對(duì)稱”);}1、以下對(duì)一維整型數(shù)組a的正確說(shuō)明是

。A)inta(10); B)intn=10,a[n];C)intn;scanf(“%d”,&n);inta[n]; D)#defineSIZE10inta[SIZE];2、以下能對(duì)一維數(shù)組a進(jìn)行正確初始化的語(yǔ)句是

。A)inta[10]=(0,0,0,0,0);B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};3、分析下列程序main(){ intn[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]+1; printf("%d\n",n[1]);}上述程序運(yùn)行后,輸出的結(jié)果是

。A)2B)1C)0D)34、若有如下定義:inta[3][3]={1,2,3,4,5,6,7,8,9},i;

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

。for(i=0;i<=2;i++)printf(“%d”,a[i][2-i]);A)357B)369C)159D)1475、若有說(shuō)明:inta[3][4]={0};則下面正確的敘述是:

。A)只有元素a[0][0]可以得到

溫馨提示

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