版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)
數(shù)組 7.1一維數(shù)組
7.1.1一維數(shù)組的定義
7.1.2一維數(shù)組元素的引用
7.1.3一維數(shù)組的初始化
7.1.4一維數(shù)組的應(yīng)用舉例
7.2二維數(shù)組
7.2.1二維數(shù)組定義
7.2.2二維數(shù)組的引用
7.2.3二維數(shù)組的初始化
7.2.4二維數(shù)組的應(yīng)用舉例
7.3字符數(shù)組和字符串
7.3.1字符數(shù)組的定義和引用
7.3.2字符數(shù)組的初始化
7.3.3字符數(shù)組的輸入/輸出
7.3.4字符串處理函數(shù)
7.4數(shù)組應(yīng)用舉例
7.1一維數(shù)組7.1.1一維數(shù)組的定義
數(shù)據(jù)類型名數(shù)組名[常量表達(dá)式];定義一個(gè)一維數(shù)組inta[5]a是數(shù)組名,有五個(gè)分量,每一個(gè)分量都是整型。編譯時(shí),要為變量分配內(nèi)存,同樣也要為數(shù)組分配內(nèi)存。對(duì)于數(shù)組,要分配一片連續(xù)內(nèi)存空間。因此,要為數(shù)組a分配5個(gè)int內(nèi)存單元,其大小為10字節(jié)7.1.1一維數(shù)組的定義數(shù)組類型說明應(yīng)注意以下幾點(diǎn):(1)數(shù)組的類型實(shí)際上是指數(shù)組元素的取值類型。對(duì)于同一個(gè)數(shù)組,其中所有元素的數(shù)據(jù)類型都是相同的。(2)數(shù)組名的命名規(guī)則和變量名相同,遵循標(biāo)志符命名規(guī)則。
(3)數(shù)組名不能與其它變量名相同,例如:
voidmain(){inta;floata[10];……}是錯(cuò)誤的7.1.1一維數(shù)組的定義數(shù)組類型說明應(yīng)注意以下幾點(diǎn):(4)方括號(hào)中常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),如a[5]表示數(shù)組a有5個(gè)元素。但是其下標(biāo)從0開始計(jì)算。因此5個(gè)元素分別為a[0]、a[1]、a[2]、a[3]、a[4]。(5)不能在方括號(hào)中用變量來表示元素的個(gè)數(shù),但是可以是符號(hào)常數(shù)或常量表達(dá)式。例如:
#defineFD5
voidmain()
{inta[3+2],b[7+FD];
……
}(6)允許在同一個(gè)類型說明中,說明多個(gè)數(shù)組和多個(gè)變量。例如:inta,b,c,d,k1[10],k2[20];voidmain(){intn=5;inta[n];……}合法錯(cuò)誤7.1.1一維數(shù)組的定義數(shù)組類型說明應(yīng)注意以下幾點(diǎn):(4)方括號(hào)中常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),如a[5]表示數(shù)組a有5個(gè)元素。但是其下標(biāo)從0開始計(jì)算。因此5個(gè)元素分別為a[0]、a[1]、a[2]、a[3]、a[4]。(5)不能在方括號(hào)中用變量來表示元素的個(gè)數(shù),但是可以是符號(hào)常數(shù)或常量表達(dá)式。例如:
#defineFD5
voidmain()
{inta[3+2],b[7+FD];
……
}(6)允許在同一個(gè)類型說明中,說明多個(gè)數(shù)組和多個(gè)變量。例如:inta,b,c,d,k1[10],k2[20];voidmain(){intn=5;inta[n];……}合法錯(cuò)誤數(shù)組元素的表示格式:數(shù)組名[下標(biāo)]例如:a[5]/*表示引用數(shù)組a中第6個(gè)元素*/a[i+j]/*表示引用數(shù)組a中第i+j+1個(gè)元素*/a[i++]/*表示引用數(shù)組a中第i+1個(gè)元素*/C語言規(guī)定只能逐個(gè)引用數(shù)組元素而不能一次引用整個(gè)數(shù)組。例如:輸出有10個(gè)元素的數(shù)組必須使用循環(huán)語句逐個(gè)輸出各數(shù)組元素for(i=0;i<10;i++)printf(“%d”,a[i]);而不能用一個(gè)語句輸出整個(gè)數(shù)組。7.1.2一維數(shù)組元素的引用
7.1.3一維數(shù)組的初始化
(1)在定義數(shù)組時(shí)對(duì)數(shù)組元素賦予初值。
例如:inta[10]={0,1,2,3,4,5,6,7,8,9};將數(shù)組元素值的初值一次放在一對(duì)花括號(hào)內(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)可以只給部分元素賦初值。
當(dāng){}中值的個(gè)數(shù)少于元素個(gè)數(shù)時(shí),只給前面部分元素賦值
例如:inta[10]={0,1,2,3,4};表示只給a[0]~a[4]5個(gè)元素賦值,而后5個(gè)元素自動(dòng)賦0值。(3)只能給元素逐個(gè)賦值,不能數(shù)組整體賦值。例如給10個(gè)元素全部賦1值,只能寫為:inta[10]={1,1,1,1,1,1,1,1,1,1}而不能寫為:inta[10]=1;(4)如給全部元素賦值,由于數(shù)據(jù)的個(gè)數(shù)已經(jīng)確定,則在數(shù)組說明中,可以不給出數(shù)組元素的個(gè)數(shù)。例如:inta[5]={1,2,3,4,5};可寫為:inta[]={1,2,3,4,5}在第二種寫法中,花括號(hào)有5個(gè)數(shù),系統(tǒng)就會(huì)據(jù)此自動(dòng)定義a數(shù)組的長度為5。但數(shù)組長度與提供初值的個(gè)數(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ù)組的應(yīng)用舉例
例7-3從鍵盤上任意輸入10個(gè)整數(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ù)組名[下標(biāo)][下標(biāo)]
其中下標(biāo)應(yīng)為整型常量或整型表達(dá)式例如:inta[3][4]表示該數(shù)組類型為實(shí)型,數(shù)組名為a,它是一個(gè)3行4列的二維數(shù)組,共有12個(gè)(3*4)個(gè)元素,即
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ù)組名[下標(biāo)][下標(biāo)]其中下標(biāo)應(yīng)為整型常量或整型表達(dá)式。同一維數(shù)組一樣,兩個(gè)下標(biāo)均從0開始。例如:a[2][3]表示a數(shù)組2行3列的元素。7.2.3二維數(shù)組的初始化
二維數(shù)組可按行分段賦值,也可按行連續(xù)賦值。例如,對(duì)數(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)可以只對(duì)部分元素賦初值,未賦初值的元素自動(dòng)取0值。例如:inta[3][3]={{1},{2},{3}};是對(duì)每一行的第一列元素賦值,末賦值的元素取0值。賦值后各元素的值為:
100
200
300(2)如對(duì)全部元素賦初值,則第一維的長度可以不給出。例如: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ù)組的每個(gè)元素又都是一個(gè)數(shù)組,就組成了二維數(shù)組。當(dāng)然,前提是各元素類型必須相同。根據(jù)這樣的分析,一個(gè)二維數(shù)組也可以分解為多個(gè)一維數(shù)組。C語言允許這種分解。如二維數(shù)組a[3][4],可分解為三個(gè)一維數(shù)組,其數(shù)組名分別為:
a[0]
a[1]
a[2]這三個(gè)—維數(shù)組都有4個(gè)元素,例如:一維數(shù)組a[0]的元素為a[0][0]、a[0][1]、a[0][2]、a[0][3]。必須強(qiáng)調(diào)的是,a[0]、a[1]、a[2]不能當(dāng)作數(shù)組元素使用,它們是數(shù)組名,不是一個(gè)單純的數(shù)組元素。
7.2.4二維數(shù)組的應(yīng)用舉例
例7-5已知inta[2][3]={{1,2,3},{4,5,6}};現(xiàn)要將a的行和列的元素值互換后存到另一個(gè)二維數(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];含義:定義一個(gè)名為c的長度為10的一維字符數(shù)組,c的每個(gè)元素可存儲(chǔ)一個(gè)字符,整個(gè)字符數(shù)組可存儲(chǔ)一個(gè)字符個(gè)數(shù)小于10的字符串。定義字符數(shù)組的形式二:char數(shù)組名[行長度][列長度]例如:charstr[3][10];含義:定義一個(gè)名為str的3行10列的二維字符數(shù)組,每行可存儲(chǔ)一個(gè)字符個(gè)數(shù)小于10的字符串,共可存儲(chǔ)3個(gè)字符串。7.3.2字符數(shù)組的初始化
1.字符數(shù)組的引用字符數(shù)組可以與數(shù)值型數(shù)組一樣,按元素引用和賦值,此時(shí)的下標(biāo)形式、取值范圍也與數(shù)值數(shù)組相同。例如:charc[10],str[3][10];c[0]=’H’;/*賦一個(gè)字符常量*/c[1]=c[0]+32;/*一個(gè)元素經(jīng)運(yùn)算后將結(jié)果賦給另一個(gè)元素*/if(c[i]==’*’)printf(“%c”,c[i]);/*用在比較表達(dá)式和輸出函數(shù)中*/inti,j;i=2,j=0;str[i][j]=65;/*給二維字符數(shù)組元素賦以整型常量*/c[8]=str[i][j]+32;/*二維字符數(shù)組元素參與運(yùn)算后將結(jié)果賦給一維字符數(shù)組元素*/與數(shù)值數(shù)組不同的是,字符數(shù)組可以用數(shù)組名進(jìn)行輸入/輸出,即對(duì)字符數(shù)組進(jìn)行整體引用。例如:charc[10];scanf(“%s”,c);/*輸入字符串到字符數(shù)組c*/printf(“%s”,c);/*輸出字符數(shù)組c*/
注意:對(duì)字符數(shù)組進(jìn)行整體輸入/輸出時(shí),格式符為“%s”,而且輸入項(xiàng)不加&,這是因?yàn)閿?shù)組名本身就代表該數(shù)組存放的起始地址。
2.字符數(shù)組的初始化
字符數(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)自動(dòng)賦予0值。當(dāng)對(duì)全體元素賦初值時(shí)也可以省去長度說明。例如:staticcharc[]={'B','A','S','I','C','d','B','A','S'};這時(shí)C數(shù)組的長度自動(dòng)定為9。說明:①初值可以是自符常量、0~255之間的整常數(shù)或字符例如:chars[7]={“Hello!”};或chars[7]=”Hello!”;所賦的初值為字符串時(shí),系統(tǒng)會(huì)自動(dòng)地在空余的單元內(nèi)賦\0,即ASCII碼為0字符,作為字符串的結(jié)束標(biāo)志。注意,這是一個(gè)不可顯示的字符,是與空格’’不同的字符,空格’’的ASCII碼為32,而且輸出效果可見。
②系統(tǒng)自動(dòng)將靜態(tài)存儲(chǔ)類別的數(shù)組中各元素賦初值\0。例如:staticcharc[5];/*各元素自動(dòng)地賦為\0*/③初值個(gè)數(shù)可小于數(shù)組長度,若大于數(shù)組長度在編譯時(shí)會(huì)出錯(cuò)。例如:chars[10]=”Hello!”;④省略長度時(shí),系統(tǒng)自動(dòng)取初值個(gè)數(shù)為長度。例如:charc[]=”Howdoyoudo.”;字符串的有效長度為14,c數(shù)組長度自動(dòng)取值為15,末尾一個(gè)單元為\0。
1.用%c格式輸入/輸出
例7-7輸出一個(gè)字符串。#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);功能:從標(biāo)準(zhǔn)輸入設(shè)備即鍵盤上輸入一個(gè)字符串。本函數(shù)得到一個(gè)函數(shù)值,即該字符數(shù)組的首地址。
例7-10從鍵盤輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間用空格分隔。#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后的串標(biāo)志'\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é)束標(biāo)志'\0'也一同拷貝。字符數(shù)名2,也可以是一個(gè)字符串常量。這時(shí)相當(dāng)于把一個(gè)字符串賦予一個(gè)字符數(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碼順序比較兩個(gè)數(shù)組中的字符串,并由函數(shù)返回值返回比較結(jié)果。
字符串1=字符串2,返回值=0;字符串2﹥字符串2,返回值﹥0;字符串1﹤字符串2,返回值﹤0。例7-13在三個(gè)字符串中找出最小的。#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ù)組名);功能:測字符串的實(shí)際長度(不含字符串結(jié)束標(biāo)志'\0'),并作為函數(shù)返回值。例7-14測字符串長度函數(shù)。#include"string.h"voidmain(){intk;staticcharst[]="Clanguage";k=strlen(st);printf("Thelenthofthestringis%d\n",k);}例7-15從鍵盤輸入若干整數(shù)(整數(shù)個(gè)數(shù)應(yīng)少于50),其值在0至4的范圍內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院門禁制度服務(wù)規(guī)范
- 臨沂醫(yī)院探視制度規(guī)范
- 學(xué)生學(xué)習(xí)規(guī)范管理制度
- 娛樂公司行政制度規(guī)范
- 行文規(guī)范性文件審核制度
- 原產(chǎn)地證簽證規(guī)范制度
- 公司午餐時(shí)間規(guī)范制度
- 化學(xué)氧化工風(fēng)險(xiǎn)評(píng)估知識(shí)考核試卷含答案
- 二氧化碳回收處理操作工變革管理評(píng)優(yōu)考核試卷含答案
- 放射科不良事件報(bào)告制度
- 二零二五年度打印機(jī)耗材供應(yīng)與定期檢測服務(wù)協(xié)議
- 廣東省深圳市2025年中考真題數(shù)學(xué)試題及答案
- 2025年綜合評(píng)標(biāo)專家培訓(xùn)
- 背債人貸款中介合同協(xié)議
- 浙江省寧波市2024-2025學(xué)年高三上學(xué)期期末模擬檢測語文試題(原卷版+解析版)
- 生態(tài)修復(fù)技術(shù)集成-深度研究
- 中小企業(yè)專利質(zhì)量控制指引編制說明
- 旅游行業(yè)安全風(fēng)險(xiǎn)管控與隱患排查方案
- DL-T5418-2009火電廠煙氣脫硫吸收塔施工及驗(yàn)收規(guī)程
- 高考數(shù)學(xué)專題:導(dǎo)數(shù)大題專練(含答案)
- 腘窩囊腫的關(guān)節(jié)鏡治療培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論