清華大學(xué)C++課程第8講數(shù)組上_第1頁
清華大學(xué)C++課程第8講數(shù)組上_第2頁
清華大學(xué)C++課程第8講數(shù)組上_第3頁
清華大學(xué)C++課程第8講數(shù)組上_第4頁
清華大學(xué)C++課程第8講數(shù)組上_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

清華大學(xué)C++課程第8講數(shù)組(上)課前答疑printf,scanf函數(shù)的頭文件到底是什么?上次問您,您說是在

<stioa。h>中,但我發(fā)現(xiàn)很多程序中用到這兩個函數(shù)時并沒有包含這個頭文件???

對C來說,STDIO.H,但I(xiàn)OSTREAM也包含\n到底什么時候需要加單撇號什么時候不加?我很迷糊,比如在cout中需要,但又在printf中有不需要?不太理解?

都需要加continue語句到底是怎么回事?書上沒有講很清楚,你的講義中也沒有太清楚,希望您能舉幾個例子!

結(jié)束本次循環(huán),進(jìn)入下次循壞判斷10的n次方怎么輸入?他的庫函數(shù)是什么?

DOUBLEPOW(DOUBEX,DOUBLEY)本講主要內(nèi)容為什么要引入數(shù)組?一維數(shù)組定義和引用二維數(shù)組定義和引用程序的調(diào)試方法*參考教材的第5.1-5.3節(jié)程序中的數(shù)據(jù)

--C++語言數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型字符型實型枚舉類型(浮點型)單精度型雙精度型數(shù)組類型結(jié)構(gòu)體類型共用體類型數(shù)據(jù)類型圖C++的數(shù)據(jù)類型8.1為啥要引入數(shù)組某同學(xué)的女朋友來到草原,該同學(xué)要從1000只羊群中選一只最肥的羊宴請賓客。但該同學(xué)由喜變愁:如何記錄每只羊的重量呢?需要定義1000個變量(a1,a2…..)嗎?如何找到最肥的羊呢?請同學(xué)幫助想想辦法?問題:哪只羊最重?程序框圖

max=0.0;

將記錄最重的羊的重量置0

for(i=0;i<10;i=i+1)

提示輸入第i只羊的重量;

鍵入第i只羊的重量

sheep[i];

max<sheep[i]

max=sheep[i];

k=i;

存重者,記錄第i只。

輸出

max

(最重的羊的重量

)

輸出

k

(最重的羊是第k只

)

用鍵盤輸入1000只羊的重量存放到一個名為sheep的數(shù)組中#include<stdio.h>Intmain(){

floatsheep[1000];//數(shù)組,有1000個元素存每只重量floatmax; inti,k; max=0.0; for(i=0;i<1000;i=i+1) {printf(“請輸入羊的重量sheep[%d]=”,i);scanf(“%f”,&(sheep[i]));//輸入第i只羊的重量

if(max<sheep[i]) {max=sheep[i]; //讓第i只羊為當(dāng)前最肥羊

k=i; //記錄第i只羊

} } printf(“max=%f\n”,max); printf(“number=%d\n”,k);return0;}8.1、數(shù)組的定義數(shù)組的定義:類型說明符 數(shù)組名[常量表達(dá)式]例:floatsheep[10];相當(dāng)于定義了10個變量;

inta2001[1000];相當(dāng)于定義了1000個變量說明數(shù)組名的第一個字符應(yīng)為英文字母;用方括號將常量表達(dá)式括起;常量表達(dá)式定義了數(shù)組元素的個數(shù);8.1、數(shù)組的定義數(shù)組下標(biāo)從0開始。如果定義5個元素,是從第0個元素至第4個元素;

例如:inta[5]定義了5個數(shù)組元素如下:

a[0],a[1],a[2],a[3],a[4]

這是5個帶下標(biāo)的變量,變量的類型是相同的,且存儲連續(xù)定義形式的常量表達(dá)式中不允許包含變量; 例如 intn; n=5;

int

a[n]; 不合法!

但引用時表達(dá)式中可以包含變量。8.2、數(shù)組的引用C++語言規(guī)定,不能引用整個數(shù)組,只能逐個引用元素,元素引用方式:數(shù)組名[下標(biāo)][例]使數(shù)組元素a[0]~a[9]的值為0~9,然后逆序輸出。

main(){inti,a[10];//數(shù)組的定義形式for(i=0;i<=9;i++)

a[i]=i;//數(shù)組的引用形式for(i=9;i>=0;i--)

printf("%d",a[i]);}8.3、數(shù)組的初始化數(shù)組初始化:定義數(shù)組完成賦初值的任務(wù) 例如

inta[5]={3,5,4,1,2}; a[0]=3;a[1]=5;a[2]=4; a[3]=1;a[4]=2;初始化:在定義時指定初始值,編譯器把初值賦給數(shù)組變量。賦值:使用賦值語句,在程序運(yùn)行時把值賦給數(shù)組變量,如a[0]=2。8.3、數(shù)組的初始化一般初始化,例:inta[10]={0,1,2,3,4,5,6,7,8,9};部分元素初始化,例、

staticinta[10]={0,1,2,3,4}; 僅前5個元素賦初值,后5個元素未指頂初值。全部元素均初始化為0。

staticinta[10]={0,0,0,0,0,0,0,0,0,0};

注意:不給數(shù)組指定初始值時,編譯器作如下處理: (1)編譯器自動把靜態(tài)數(shù)組的各元素初始化為0。 (2)編譯器不為動態(tài)數(shù)組自動指定初始值。如果全部元素均指定初值,定義中可省略元素個數(shù):staticinta[5]={1,2,3,4,5};可以寫為:

staticinta[]={1,2,3,4,5};8.3、數(shù)組的初始化算法重點:對比Fibonacci的3種解法:遞推法、遞歸法和數(shù)組法【例】已知A,B,C,D中有一人是小偷,并且,這四個人中每人要么說真話,要么說假話。在審問過程中,這四個人分別回答如下:A說:B沒有偷,是D偷的。B說:我沒有偷,是C偷的。C說:A沒有偷,是B偷的。D說:我沒有偷。現(xiàn)要求根據(jù)這四個人的回答,寫出能確定誰是小偷的條件。假設(shè)用整型變量a,b,c,d分別代表A,B,C,D四個人,且變量只取值為0和1,值為1表示該人為小偷,值為0表示該人不是小偷。由于四個人中只有一人是小偷,而且不管是不是小偷,他的回答要么是真話,要么是假話。2.4.5邏輯運(yùn)算符和邏輯表達(dá)式(回顧)應(yīng)用舉例列舉法應(yīng)用舉例注意:編譯鏈接成功不等于沒有語法錯誤附:程序的調(diào)試逐過程調(diào)試:F10逐過程調(diào)試:F10逐過程調(diào)試:F10逐過程調(diào)試:F10逐過程調(diào)試:F10逐過程調(diào)試:F10怎么辦?

如何表示a和b?8.4二維數(shù)組定義形式:類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]例、(1)floata[3][4];a為3×4(3行4列)的數(shù)組,共12個元素,分別是: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](2)注意:排列(存儲)順序,先列后行;下標(biāo)變化,即二維數(shù)組中元素的引用8.4二維數(shù)組二維數(shù)組的理解:二維數(shù)組a[3][4]理解為:有三個元素a[0]、a[1]、a[2],每一個元素是一個包含4個元素的數(shù)組。8.4三維數(shù)組三維數(shù)組:floata[2][3][4]在內(nèi)存中的存放順序:a[0][0][0]→a[0][0][1]→a[0][0][2]→a[0][0][3]→a[0][1][0]→a[0][1][1]→a[0][1][2]→a[0][1][3]→a[0][2][0]→a[0][2][1]→a[0][2][2]→a[0][2][3]→a[1][0][0]→a[1][0][1]→a[1][0][2]→a[1][0][3]→a[1][1][0]→a[1][1][1]→a[1][1][2]→a[1][1][3]→a[1][2][0]→a[1][2][1]→a[1][2][2]→a[1][2][3]8.5二維數(shù)組的初始化

分行賦值如:staticinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};全部數(shù)據(jù)寫在一個大括號內(nèi)如:staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};部分元素賦值如:staticinta[3][4]={{1},{5},{9}}; 僅對a[0][0]、a[1][0]、a[2][0]賦值,其余元素未賦值(對于靜態(tài)數(shù)組,編譯器自動為未賦值元素指定初值0。如果對全部元素賦初值,則第一維的長度可以不指定,但必須指定第二維的長度。如:staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};與下面定義等價:staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};8.6應(yīng)用舉例[例]將一個二維數(shù)組行和列交換,存到另一個二維數(shù)組中。例如8.6應(yīng)用舉例逐過程調(diào)試:F10逐過程調(diào)試:F10逐過程調(diào)試:F10斷點調(diào)試:F5斷點調(diào)試:F5斷點調(diào)試:F58.6應(yīng)用舉例[例]有一個3×4的矩陣,要求編程序以求出其中值最大的那個元素的值及其所在的行號和列號。算法:“打擂臺”,首先把第一個元素a[0][0]作為臨時最大值max,然后把臨時最大值max與每一個元素a[i][j]進(jìn)行比較,若a[i][j]>max,把a(bǔ)[i][j]作為新的臨時最大值,并記錄下其下標(biāo)i和j。當(dāng)全部元素比較完后,max是整個矩陣全部元素的最大值。8.6應(yīng)用舉例8.6應(yīng)用舉例本講重點數(shù)組的存儲特點:連續(xù)存儲數(shù)組的定義和引用方法數(shù)組解題算法逐過程和斷點調(diào)試程序的方法第3次課后作業(yè)1.參考教材P162的第7題。寫出算法,上機(jī)編程,按逐過程調(diào)試方法,分析(參考答案)程序中max,maxj和flag3個變量在程序運(yùn)行過程的整個變化情況。要求:算法描述,程序運(yùn)行結(jié)果,調(diào)試過程max,maxj;flag3個變量運(yùn)行時的所有值。2.參考教材P163的第9題。要求,建一個

溫馨提示

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

評論

0/150

提交評論