C語言程序設計課件:數(shù)組_第1頁
C語言程序設計課件:數(shù)組_第2頁
C語言程序設計課件:數(shù)組_第3頁
C語言程序設計課件:數(shù)組_第4頁
C語言程序設計課件:數(shù)組_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設計

數(shù)組 7.1一維數(shù)組

7.1.1一維數(shù)組的定義

7.1.2一維數(shù)組元素的引用

7.1.3一維數(shù)組的初始化

7.1.4一維數(shù)組的應用舉例

7.2二維數(shù)組

7.2.1二維數(shù)組定義

7.2.2二維數(shù)組的引用

7.2.3二維數(shù)組的初始化

7.2.4二維數(shù)組的應用舉例

7.3字符數(shù)組和字符串

7.3.1字符數(shù)組的定義和引用

7.3.2字符數(shù)組的初始化

7.3.3字符數(shù)組的輸入/輸出

7.3.4字符串處理函數(shù)

7.4數(shù)組應用舉例

7.1一維數(shù)組7.1.1一維數(shù)組的定義

數(shù)據(jù)類型名數(shù)組名[常量表達式];定義一個一維數(shù)組inta[5]a是數(shù)組名,有五個分量,每一個分量都是整型。編譯時,要為變量分配內(nèi)存,同樣也要為數(shù)組分配內(nèi)存。對于數(shù)組,要分配一片連續(xù)內(nèi)存空間。因此,要為數(shù)組a分配5個int內(nèi)存單元,其大小為10字節(jié)7.1.1一維數(shù)組的定義數(shù)組類型說明應注意以下幾點:(1)數(shù)組的類型實際上是指數(shù)組元素的取值類型。對于同一個數(shù)組,其中所有元素的數(shù)據(jù)類型都是相同的。(2)數(shù)組名的命名規(guī)則和變量名相同,遵循標志符命名規(guī)則。

(3)數(shù)組名不能與其它變量名相同,例如:

voidmain(){inta;floata[10];……}是錯誤的7.1.1一維數(shù)組的定義數(shù)組類型說明應注意以下幾點:(4)方括號中常量表達式表示數(shù)組元素的個數(shù),如a[5]表示數(shù)組a有5個元素。但是其下標從0開始計算。因此5個元素分別為a[0]、a[1]、a[2]、a[3]、a[4]。(5)不能在方括號中用變量來表示元素的個數(shù),但是可以是符號常數(shù)或常量表達式。例如:

#defineFD5

voidmain()

{inta[3+2],b[7+FD];

……

}(6)允許在同一個類型說明中,說明多個數(shù)組和多個變量。例如:inta,b,c,d,k1[10],k2[20];voidmain(){intn=5;inta[n];……}合法錯誤7.1.1一維數(shù)組的定義數(shù)組類型說明應注意以下幾點:(4)方括號中常量表達式表示數(shù)組元素的個數(shù),如a[5]表示數(shù)組a有5個元素。但是其下標從0開始計算。因此5個元素分別為a[0]、a[1]、a[2]、a[3]、a[4]。(5)不能在方括號中用變量來表示元素的個數(shù),但是可以是符號常數(shù)或常量表達式。例如:

#defineFD5

voidmain()

{inta[3+2],b[7+FD];

……

}(6)允許在同一個類型說明中,說明多個數(shù)組和多個變量。例如:inta,b,c,d,k1[10],k2[20];voidmain(){intn=5;inta[n];……}合法錯誤數(shù)組元素的表示格式:數(shù)組名[下標]例如:a[5]/*表示引用數(shù)組a中第6個元素*/a[i+j]/*表示引用數(shù)組a中第i+j+1個元素*/a[i++]/*表示引用數(shù)組a中第i+1個元素*/C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。例如:輸出有10個元素的數(shù)組必須使用循環(huán)語句逐個輸出各數(shù)組元素for(i=0;i<10;i++)printf(“%d”,a[i]);而不能用一個語句輸出整個數(shù)組。7.1.2一維數(shù)組元素的引用

7.1.3一維數(shù)組的初始化

(1)在定義數(shù)組時對數(shù)組元素賦予初值。

例如:inta[10]={0,1,2,3,4,5,6,7,8,9};將數(shù)組元素值的初值一次放在一對花括號內(nèi)。

經(jīng)過上面的定義和初始化之后a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9(2)可以只給部分元素賦初值。

當{}中值的個數(shù)少于元素個數(shù)時,只給前面部分元素賦值

例如:inta[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而后5個元素自動賦0值。(3)只能給元素逐個賦值,不能數(shù)組整體賦值。例如給10個元素全部賦1值,只能寫為:inta[10]={1,1,1,1,1,1,1,1,1,1}而不能寫為:inta[10]=1;(4)如給全部元素賦值,由于數(shù)據(jù)的個數(shù)已經(jīng)確定,則在數(shù)組說明中,可以不給出數(shù)組元素的個數(shù)。例如:inta[5]={1,2,3,4,5};可寫為:inta[]={1,2,3,4,5}在第二種寫法中,花括號有5個數(shù),系統(tǒng)就會據(jù)此自動定義a數(shù)組的長度為5。但數(shù)組長度與提供初值的個數(shù)不相同,則數(shù)組長度不能省略。例7-1數(shù)組a[6]的初始化。#include<stdio.h>voidmain(){ inta[6]={1,2,3,4,5,6};printf("數(shù)組首地址:%x\n",a); printf("數(shù)組占用的內(nèi)存空間:%d字節(jié)\n",sizeof(a)); printf("數(shù)組a[5]各元素的地址和值:\n"); for(inti=0;i<5;i++) printf("a[%d]:%x(地址)%d(值)\n",i,&a[i],a[i]);}7.1.4一維數(shù)組的應用舉例

例7-3從鍵盤上任意輸入10個整數(shù),要求按從小到大的順序在屏幕上顯示出來。排序的方法有很多,本例采用選擇法。#include<stdio.h>#defineN6 voidmain(){inta[N]; inti,j,t,k;printf("PleaseinputNnumbers:\n");for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++) {for(j=i+1;j<N;j++){if(a[j]<a[i]){t=a[i];a[i]=data[j];a[j]=t;}}for(k=0;k<N;k++){printf(“%4d”,a[k]);}printf(“\n”);}}7.2二維數(shù)組7.2.1二維數(shù)組的定義類型說明符數(shù)組名[下標][下標]

其中下標應為整型常量或整型表達式例如:inta[3][4]表示該數(shù)組類型為實型,數(shù)組名為a,它是一個3行4列的二維數(shù)組,共有12個(3*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[1][1]a[1][2]a[2][3]

7.2.2二維數(shù)組的引用

二維數(shù)組的引用形式為:

數(shù)組名[下標][下標]其中下標應為整型常量或整型表達式。同一維數(shù)組一樣,兩個下標均從0開始。例如:a[2][3]表示a數(shù)組2行3列的元素。7.2.3二維數(shù)組的初始化

二維數(shù)組可按行分段賦值,也可按行連續(xù)賦值。例如,對數(shù)組a[5][3]來說:按行分段賦值可寫為:

inta[5][3]={{34,78,76},{76,87,43},{12,32,43},{45,64,24},{87,54,36}};按行連續(xù)賦值可寫為:

inta[5][3]={34,78,76,76,87,43,12,32,43,45,64,24,87,54,36};這兩種賦初值的結(jié)果是完全相同的。7.2.3二維數(shù)組的初始化

說明:

(1)可以只對部分元素賦初值,未賦初值的元素自動取0值。例如:inta[3][3]={{1},{2},{3}};是對每一行的第一列元素賦值,末賦值的元素取0值。賦值后各元素的值為:

100

200

300(2)如對全部元素賦初值,則第一維的長度可以不給出。例如:inta[3][3]={1,2,3,4,5,6,7,8,9};可以寫為

inta[][3]={1,2,3,4,5,6,7,8,9};

說明:(3)數(shù)組是一種構(gòu)造類型的數(shù)據(jù)。二維數(shù)組可以看作是由一維數(shù)組的嵌套而構(gòu)成的。設一維數(shù)組的每個元素又都是一個數(shù)組,就組成了二維數(shù)組。當然,前提是各元素類型必須相同。根據(jù)這樣的分析,一個二維數(shù)組也可以分解為多個一維數(shù)組。C語言允許這種分解。如二維數(shù)組a[3][4],可分解為三個一維數(shù)組,其數(shù)組名分別為:

a[0]

a[1]

a[2]這三個—維數(shù)組都有4個元素,例如:一維數(shù)組a[0]的元素為a[0][0]、a[0][1]、a[0][2]、a[0][3]。必須強調(diào)的是,a[0]、a[1]、a[2]不能當作數(shù)組元素使用,它們是數(shù)組名,不是一個單純的數(shù)組元素。

7.2.4二維數(shù)組的應用舉例

例7-5已知inta[2][3]={{1,2,3},{4,5,6}};現(xiàn)要將a的行和列的元素值互換后存到另一個二維數(shù)組b中。#include<stdio.h>voidmain(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2];inti,j; for(i=0;i<2;i++)for(j=0;j<3;j++){b[j][i]=a[i][j];}printf("\n");for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%d\t",b[i][j]);printf("\n");}}7.3字符數(shù)組和字符串

7.3.1字符數(shù)組的定義1.字符數(shù)組的定義定義字符數(shù)組的形式一:char數(shù)組名[數(shù)組長度]例如:charc[10];含義:定義一個名為c的長度為10的一維字符數(shù)組,c的每個元素可存儲一個字符,整個字符數(shù)組可存儲一個字符個數(shù)小于10的字符串。定義字符數(shù)組的形式二:char數(shù)組名[行長度][列長度]例如:charstr[3][10];含義:定義一個名為str的3行10列的二維字符數(shù)組,每行可存儲一個字符個數(shù)小于10的字符串,共可存儲3個字符串。7.3.2字符數(shù)組的初始化

1.字符數(shù)組的引用字符數(shù)組可以與數(shù)值型數(shù)組一樣,按元素引用和賦值,此時的下標形式、取值范圍也與數(shù)值數(shù)組相同。例如:charc[10],str[3][10];c[0]=’H’;/*賦一個字符常量*/c[1]=c[0]+32;/*一個元素經(jīng)運算后將結(jié)果賦給另一個元素*/if(c[i]==’*’)printf(“%c”,c[i]);/*用在比較表達式和輸出函數(shù)中*/inti,j;i=2,j=0;str[i][j]=65;/*給二維字符數(shù)組元素賦以整型常量*/c[8]=str[i][j]+32;/*二維字符數(shù)組元素參與運算后將結(jié)果賦給一維字符數(shù)組元素*/與數(shù)值數(shù)組不同的是,字符數(shù)組可以用數(shù)組名進行輸入/輸出,即對字符數(shù)組進行整體引用。例如:charc[10];scanf(“%s”,c);/*輸入字符串到字符數(shù)組c*/printf(“%s”,c);/*輸出字符數(shù)組c*/

注意:對字符數(shù)組進行整體輸入/輸出時,格式符為“%s”,而且輸入項不加&,這是因為數(shù)組名本身就代表該數(shù)組存放的起始地址。

2.字符數(shù)組的初始化

字符數(shù)組也允許在類型說明時作初始化賦值。例如:staticcharc[10]={'B','A','S','I','C','d','B','A','S'};賦值后各元素的值為:數(shù)組c[0]、c[1]、c[2]、c[3]、c[4]、c[5]、c[6]、c[7]、c[8]、c[9]其中c[9]未賦值,由系統(tǒng)自動賦予0值。當對全體元素賦初值時也可以省去長度說明。例如:staticcharc[]={'B','A','S','I','C','d','B','A','S'};這時C數(shù)組的長度自動定為9。說明:①初值可以是自符常量、0~255之間的整常數(shù)或字符例如:chars[7]={“Hello!”};或chars[7]=”Hello!”;所賦的初值為字符串時,系統(tǒng)會自動地在空余的單元內(nèi)賦\0,即ASCII碼為0字符,作為字符串的結(jié)束標志。注意,這是一個不可顯示的字符,是與空格’’不同的字符,空格’’的ASCII碼為32,而且輸出效果可見。

②系統(tǒng)自動將靜態(tài)存儲類別的數(shù)組中各元素賦初值\0。例如:staticcharc[5];/*各元素自動地賦為\0*/③初值個數(shù)可小于數(shù)組長度,若大于數(shù)組長度在編譯時會出錯。例如:chars[10]=”Hello!”;④省略長度時,系統(tǒng)自動取初值個數(shù)為長度。例如:charc[]=”Howdoyoudo.”;字符串的有效長度為14,c數(shù)組長度自動取值為15,末尾一個單元為\0。

1.用%c格式輸入/輸出

例7-7輸出一個字符串。#include<stdio.h>voidmain(){inti;charc[15]={'I','','a','m','','a','','s','t','u','d','e','n','t','.'};for(i=0;i<=15;i++)printf("%c",c[i]);printf("\n");}7.3.3字符數(shù)組的輸入/輸出

7.3.3字符數(shù)組的輸入輸出2.用%s格式輸入/輸出

例7-8字符串輸入、輸出。#include<stdio.h>voidmain(){charc[16];printf("inputstring:\n");scanf("%s",c);printf("%s\n",c);}1.字符串輸出函數(shù)puts格式:puts(字符數(shù)組名);功能:把字符數(shù)組中的字符串輸出到顯示器。即在屏幕上顯示該字符串。例7-9字符串輸出函數(shù)。

#include"stdio.h"voidmain(){staticcharc[]="BASIC\ndBASE";puts(c);}7.3.4字符串處理函數(shù)

2.字符串輸入函數(shù)gets格式:gets(s);功能:從標準輸入設備即鍵盤上輸入一個字符串。本函數(shù)得到一個函數(shù)值,即該字符數(shù)組的首地址。

例7-10從鍵盤輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔。#include<stdio.h> #include<string.h>voidmain(){chars[80],c1,c2=’‘;inti=0,num=0;gets(s);while(s[i]!=’\0’)

{c1=s[i];if(i==0)c2==’‘;elsec2=s[i-1];if(c1!=''&&c2=='')num++;i++;}printf(“Thereare%dwords.\n”,num);}3.字符串連接函數(shù)strcat格式:strcat(字符數(shù)組名1,字符數(shù)組名2);功能:把字符數(shù)組2中的字符串連接到字符數(shù)組1中字符串的后面,并刪去字符串1后的串標志'\0'。本函數(shù)返回值是字符數(shù)組1的首地址。例7-11字符串連接函數(shù)。#include"string.h"voidmain(){staticcharst1[30]="Mynameis";intst2[10];printf("inputyourname:\n");gets(st2);strcat(st1,st2);puts(st1);}4.字符串拷貝函數(shù)strcpy格式:strcpy(字符數(shù)組名1,字符數(shù)組名2);功能:把字符數(shù)組2中的字符串拷貝到字符數(shù)組1中。串結(jié)束標志'\0'也一同拷貝。字符數(shù)名2,也可以是一個字符串常量。這時相當于把一個字符串賦予一個字符數(shù)組。例7-12字符串拷貝函數(shù)。#include"string.h"voidmain(){staticcharst1[15],st2[]="CLanguage";strcpy(st1,st2);puts(st1);printf("\n");}5.字符串比較函數(shù)strcmp格式:strcmp(字符數(shù)組名1,字符數(shù)組名2);功能:按照ASCII碼順序比較兩個數(shù)組中的字符串,并由函數(shù)返回值返回比較結(jié)果。

字符串1=字符串2,返回值=0;字符串2﹥字符串2,返回值﹥0;字符串1﹤字符串2,返回值﹤0。例7-13在三個字符串中找出最小的。#include<string.h>#include<stdio.h>voidmain(){chars[20],str[3][20];inti;for(i=0;i<3;i++)gets(str[i]);strcpy(s,(strcmp(str[0],str[1])<0?str[0]:str[1]));if(strcmp(str[2],s)<0)strcpy(s,str[2]);printf("%s\n",s);}6.測字符串長度函數(shù)strlen格式:strlen(字符數(shù)組名);功能:測字符串的實際長度(不含字符串結(jié)束標志'\0'),并作為函數(shù)返回值。例7-14測字符串長度函數(shù)。#include"string.h"voidmain(){intk;staticcharst[]="Clanguage";k=strlen(st);printf("Thelenthofthestringis%d\n",k);}例7-15從鍵盤輸入若干整數(shù)(整數(shù)個數(shù)應少于50),其值在0至4的范圍內(nèi),用-

溫馨提示

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

評論

0/150

提交評論