C語言程序設(shè)計(jì)_第1頁
C語言程序設(shè)計(jì)_第2頁
C語言程序設(shè)計(jì)_第3頁
C語言程序設(shè)計(jì)_第4頁
C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《提高篇》之第七講數(shù)組數(shù)信學(xué)院張熠C語言程序設(shè)計(jì)7.1基本概念7.1.1數(shù)組的引入例7.1

求08給水排水1、2班同學(xué)C程序設(shè)計(jì)期末考試的平均成績(jī)和標(biāo)準(zhǔn)差。標(biāo)準(zhǔn)差公式如下:數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系分析08給水排水共57名學(xué)生,假設(shè)成績(jī)?yōu)檎麛?shù),則需要定義57個(gè)int型變量來保存成績(jī)。這57個(gè)int型變量具有相同的功能和相同的操作,是否能夠通過一種新的命名方式來統(tǒng)一命名該57個(gè)int型變量?數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.1.2數(shù)組的概念數(shù)組:具有相同類型的數(shù)據(jù)組成的序列,是有序集合。數(shù)組元素:由其所在的位置序號(hào)(稱數(shù)組元素的下標(biāo))來區(qū)分,一個(gè)數(shù)組元素就是一個(gè)相對(duì)獨(dú)立的變量。數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.2一維數(shù)組7.2.1聲明聲明形式:類型說明符

數(shù)組名[常量表達(dá)式];例如

intmark[57];存儲(chǔ)形式:mark[0]mark[1]mark[2]mark[3]……mark[55]mark[56]數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系關(guān)于數(shù)組聲明的說明(1)數(shù)組名代表整個(gè)數(shù)組的首地址。(2)同一數(shù)組中的所有元素,按其下標(biāo)的順序占用一段連續(xù)的存儲(chǔ)單元。(3)數(shù)組元素的下標(biāo),是元素相對(duì)于數(shù)組起始地址的偏移量,所以從0開始順序編號(hào)。(4)常量表達(dá)式中不能包含變量。數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.2.2數(shù)組的初始化1、對(duì)全部元素賦初值。如:inta[5]={3,5,6,8,4};

2、定義時(shí)若不指定數(shù)組長(zhǎng)度,則系統(tǒng)根據(jù)初值個(gè)數(shù)自動(dòng)確定。如:inta[]={3,5,6,8,4};

等價(jià)于inta[5]={3,5,6,8,4};3、可以只給部分元素賦初值。如:inta[8]={3,5,6,8,4};等價(jià)于inta[8]={3,5,6,8,4,0,0,0};4、如果想使一個(gè)數(shù)組中全部元素值為0,可以寫成:

inta[10]={0,0,0,0,0,0,0,0,0,0}

或:inta[10]={0};數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.2.3數(shù)組的使用定義了數(shù)組以后,就可使用它了。但不能利用數(shù)組名來整體引用一個(gè)數(shù)組,只能單個(gè)的使用數(shù)組元素。例如:intmark[57];mark=90;//錯(cuò),不能直接使用數(shù)組名mark[0]=88;//對(duì),表示數(shù)組的第一個(gè)元素為88mark[57]=60;//錯(cuò),下標(biāo)越界了數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系例7.2

輸入一個(gè)10位數(shù),將該10位數(shù)反向輸出,如輸入1234567890,則輸出0987654321數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.2.4數(shù)組的存儲(chǔ)數(shù)組變量在內(nèi)存中分配一片連續(xù)的存儲(chǔ)單元,數(shù)組元素按數(shù)組下標(biāo)從小到大連續(xù)存放。例

inta[5];設(shè)a的首地址為1000,數(shù)組a存儲(chǔ)示意圖如右圖。a[0]1000a[1]1004a[2]1008a[3]1012a[4]1016數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.2.5數(shù)組的應(yīng)用例7.3利用數(shù)組來求解小兔子問題,求3年內(nèi)每個(gè)月小兔子的總對(duì)數(shù),要求每半年換一行。數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.3二維數(shù)組如何存放下列數(shù)據(jù):數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系若一個(gè)一維數(shù)組,它的每一個(gè)元素亦是類型相同的一維數(shù)組時(shí),便構(gòu)成二維數(shù)組。數(shù)組的類型相同:是指數(shù)組大小、元素類型相同。數(shù)組的維數(shù):是指數(shù)組的下標(biāo)個(gè)數(shù),一維數(shù)組元素只有一個(gè)下標(biāo),二維數(shù)組元素有兩個(gè)下標(biāo)。數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.3.1聲明聲明形式:類型說明符

數(shù)組名[行數(shù)][列數(shù)];例如

inta[3][5];

定義了一個(gè)3×5的數(shù)組b,即數(shù)組為3行5列,可存放15個(gè)整型數(shù)據(jù)。數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.3.2表示形式

二維數(shù)組類似于數(shù)學(xué)中的矩陣,由行、列組成。

把所有第一維下標(biāo)相同的元素稱為行,所有第二維下標(biāo)相同的元素稱為列。數(shù)組a的6個(gè)元素如下:

a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.3.3存儲(chǔ)結(jié)構(gòu)設(shè)有定義inta[2][3];floatb[3][2];a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]第0行第1行第1行b[0][0]b[0][1]b[1][0]b[1][1]b[2][0]b[2][1]第0行第2行數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.3.4初始化1、分行給二維數(shù)組賦初值,每個(gè)花括號(hào)內(nèi)的數(shù)據(jù)對(duì)應(yīng)一行元素。例:inta[2][3]={{1,2,3},{2,3,4}};2、將所有初值寫在一個(gè)花括號(hào)內(nèi),順序給各元素賦值。例:inta[2][3]={1,2,3,2,3,4};3、只對(duì)部分元素賦值,沒有初值對(duì)應(yīng)的元素賦0值或空字符(字符數(shù)組)。 例:inta[2][3]={{1,2},{4}};數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系4、給全部元素賦初值或分行初始化時(shí),可不指定第一維大小,其大小系統(tǒng)可根據(jù)初值數(shù)目與列數(shù)(第二維)自動(dòng)確定;但必須指定第二維的大小。

例:inta[][3]={1,2,3,4,5,6};

inta[][3]={{0},{0,5}};數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.3.5應(yīng)用例7.6用如下的3×3矩陣初始化數(shù)組a[3][3],求矩陣的轉(zhuǎn)置矩陣。

1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.4字符數(shù)組與字符串7.4.1定義與初始化charch[7]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’};charch[]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’};數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.4.2字符串的概念及存儲(chǔ)字符串:若干有效字符的序列;可包含轉(zhuǎn)義字符、ASCⅡ碼表中的字符;形式為:用雙引號(hào)括起來的字符序列;例:“Iamastudent.”

“Hello”

“a[5]=”“%f\n”字符串的結(jié)束標(biāo)志:‘\0’。注:C語言無字符串類型,字符串是存放在字符數(shù)組中的。數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.4.3字符串初始化數(shù)組charch[9]={“student”};字符串和數(shù)組長(zhǎng)度?說明:1、字符串結(jié)束標(biāo)志'\0'僅用于判斷字符串是否結(jié)束,輸出字符串時(shí)不會(huì)輸出。2、在對(duì)有確定大小的字符數(shù)組用字符串初始化時(shí),數(shù)組長(zhǎng)度應(yīng)大于字符串長(zhǎng)度。student\0數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系3、在初始化一個(gè)一維字符數(shù)組時(shí),可以省略花括號(hào)。如:chars[8]="student";4、不能直接將字符串賦值給字符數(shù)組名。下面的操作是錯(cuò)誤的。s=”student”;數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.4.4輸入輸出printf()函數(shù)例:charst[15]=“Iamaboy!”;

printf(“st=%s,%c,%c”,st,st[3],st[7]);問:如何輸出“Hello,C!”數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系puts()函數(shù):將字符數(shù)組str中包含的字符串或str所指示的字符串輸出,同時(shí)將‘\0’轉(zhuǎn)換成換行符。

例:charch[]="student";

puts(ch);

puts("Hello");數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系scanf()函數(shù):例:charst[15];

scanf(“%s”,st);但:scanf(“%s”,&st);是錯(cuò)誤的,因?yàn)閟t就代表了該字符數(shù)組的首地址。用scanf輸入的字符串中不能含有空格。例:Howdoyoudo↙數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系gets()函數(shù):從鍵盤讀入一個(gè)字符串到str中,并自動(dòng)在末尾加字符串結(jié)束標(biāo)志符’\0’。輸入字符串時(shí)以回車結(jié)束輸入,這種方式可以讀入含空格符的字符串。例:chars[14];

gets(s);若輸入的字符串為:Howdoyoudo?↙則s的內(nèi)容為:Howdoyoudo?\0數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系7.4.5字符串處理函數(shù)1.字符串拷貝函數(shù):strcpy()調(diào)用格式:strcpy(d_str,s_str);功能:將源字符串s_str復(fù)制到目標(biāo)字符數(shù)組d_str中。說明:d_str的長(zhǎng)度應(yīng)不小于s_str的長(zhǎng)度,d_str必須寫成數(shù)組名形式。s_str可以是字符串常量或字符數(shù)組名形式。例:chars1[10],s2[8]=“student”,s3[6];strcpy(s1,s2);strcpy(s3,"okey");

strcpy(s1,s2,5);數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系2.字符串連接函數(shù):strcat()調(diào)用格式:strcat(d_str,s_str);功能:將s_str連同‘\0’連接到d_str的最后一個(gè)字符(非‘\0’字符)后面。結(jié)果放在d_str中。例:chars1[14]={“Iama”}; chars2[5]=“boy.”; strcat(s1,s2);連接前:s1:s2:連接后:s1:Iama\0boy.\0Iamaboy.\0數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系3.字符串比較函數(shù)strcmp()調(diào)用格式:strcmp(str1,str2);功能:若str1=str2,則函數(shù)返回值為0; 若str1>str2,則函數(shù)返回值為正整數(shù); 若str1<str2,則函數(shù)值返回為負(fù)整數(shù)。數(shù)學(xué)與信息工程學(xué)院計(jì)算機(jī)系比較規(guī)則:1、不是比較長(zhǎng)短,而是比較ASCII碼的大小。兩個(gè)字符串自左至右逐個(gè)字符比較,直到出現(xiàn)不同字符或遇到‘\0’為止。2、如字符全部相同,則兩個(gè)字符串相等;3、若出現(xiàn)不同字符,則遇到的第一對(duì)不同字符的ASCⅡ大者為大。將ASCII碼之差作為比較結(jié)果由函數(shù)值帶回。比較兩字符串是否相等一般用以下形式:

if(strcmp(str1,str2)==0){…};而if(str1==str2){…

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論