C-程序設(shè)計(第3章)new解析課件_第1頁
C-程序設(shè)計(第3章)new解析課件_第2頁
C-程序設(shè)計(第3章)new解析課件_第3頁
C-程序設(shè)計(第3章)new解析課件_第4頁
C-程序設(shè)計(第3章)new解析課件_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C/C+程序設(shè)計教程鄭秋生 主編10/10/20221C/C+程序設(shè)計教程鄭秋生 主編10/9/20221第3章 C+流程控制 本章學習重點掌握內(nèi)容:結(jié)構(gòu)化程序設(shè)計的程序結(jié)構(gòu)選擇結(jié)構(gòu)和構(gòu)成選擇的語句循環(huán)結(jié)構(gòu)和構(gòu)成循環(huán)的語句結(jié)構(gòu)化程序設(shè)計的典型算法和應用10/10/20222第3章 C+流程控制 本章學習重點掌握內(nèi)容:10/9/2第3章 C+流程控制3.1 算法與流程圖3.2 C+語句和程序的三種基本結(jié)構(gòu)3.3 順序結(jié)構(gòu)程序3.4 選擇結(jié)構(gòu)程序3.5 循環(huán)結(jié)構(gòu)程序設(shè)計3.6 常用算法及應用實例10/10/20223第3章 C+流程控制3.1 算法與流程圖10/9/203.1 算法與流程圖 3.1

2、.1 算法的概念 所謂算法,是指為了解決一個問題而采取的方法和步驟。當利用計算機來解決一個具體問題時,也要首先確定算法。 例如,要計算S = 1 + 2 + 3 + + 100, 算法是程序設(shè)計的靈魂,而程序設(shè)計語言是表達算法的形式。10/10/202243.1 算法與流程圖 3.1.1 算法的概念10/9/23.1.2 算法的描述一、傳統(tǒng)流程圖流程圖由一些特定意義的圖形、流程線及簡要的文字說明構(gòu)成,它能清晰明確地表示程序的運行過程,傳統(tǒng)流程圖由以下圖形組成:10/10/202253.1.2 算法的描述一、傳統(tǒng)流程圖10/9/202253.1.2 算法的描述二、N-S圖在這種流程圖中,全部算法

3、寫在一個大矩形框內(nèi),該框中還可以包含一些從屬于它的小矩形框。例如網(wǎng)上購物的N-S圖 10/10/202263.1.2 算法的描述二、N-S圖10/9/202263.2C+語句和程序的三種基本結(jié)構(gòu) 語句是程序中最小的可執(zhí)行單位。一條語句可以完成一種基本操作, 3.2.1 C+語句1表達式語句任何一個表達式后面加上分號;例如: c=a+b;2空語句 ;3復合語句復合語句是用一對花括號 括起來的語句塊。 4控制語句控制語句改變程序執(zhí)行的方向。例如:if語句、for語句等。10/10/202273.2C+語句和程序的三種基本結(jié)構(gòu) 語句是程3.2.2 C+程序的三種基本結(jié)構(gòu) 在過程化程序設(shè)計中,按照結(jié)構(gòu)

4、化設(shè)計的思想由語句構(gòu)成三種基本結(jié)構(gòu)。1順序結(jié)構(gòu) 程序按照語句的書寫順序依次執(zhí)行,語句在前的先執(zhí)行,語句在后的后執(zhí)行,順序結(jié)構(gòu)只能滿足設(shè)計簡單程序的要求。2. 選擇結(jié)構(gòu)(也稱分支結(jié)構(gòu)) 在選擇結(jié)構(gòu)中,程序根據(jù)判斷條件是否成立,來選擇執(zhí)行不同的程序段。3. 循環(huán)結(jié)構(gòu) 在循環(huán)結(jié)構(gòu)中,程序根據(jù)判斷條件是否成立,來決定是否重復執(zhí)行某個程序段。 10/10/202283.2.2 C+程序的三種基本結(jié)構(gòu) 在過程化程序設(shè)3.2.3 結(jié)構(gòu)化算法解決任何一個復雜的問題,都可以由3種基本結(jié)構(gòu)來完成:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。由這3種基本結(jié)構(gòu)構(gòu)成的算法稱為結(jié)構(gòu)化算法,它不存在無規(guī)律的轉(zhuǎn)移,只有在本結(jié)構(gòu)內(nèi)才允許存在

5、分支或者向前向后的跳轉(zhuǎn)。由結(jié)構(gòu)化算法編寫的程序稱為結(jié)構(gòu)化程序。結(jié)構(gòu)化程序便于閱讀和修改,提高了程序的可讀性和可維護性。10/10/202293.2.3 結(jié)構(gòu)化算法解決任何一個復雜的問題,都可以由3種3.3 順序結(jié)構(gòu)程序【例3.1】“雞兔同籠”問題。雞有2只腳,兔有4只腳,如果已知雞和兔的總頭數(shù)為h,總腳數(shù)為f。問籠中雞和兔各有多少只?10/10/2022103.3 順序結(jié)構(gòu)程序【例3.1】“雞兔同籠”問題。雞有2只“雞兔同籠”問題#include int main( ) int h,f,x,y; couth; coutf; x = (4 * h - f) / 2; y = (f - 2 * h

6、) / 2; cout則籠中雞有 x 只,兔有 y 只。endl; return 0;10/10/202211“雞兔同籠”問題#include 13.4 選擇結(jié)構(gòu)程序 它能根據(jù)給定條件,從事先編寫好的各個不同分支中執(zhí)行并且僅執(zhí)行某一分支的相應操作。 10/10/2022123.4 選擇結(jié)構(gòu)程序 它能根據(jù)給定條件,從事先編寫好的各個3.4.1 if語句 if語句語法格式為:if(表達式) 語句1;else 語句2;if語句的語句2可以為空 .【例3.2】輸入一個年份,判斷是否閏年。閏年的年份必須滿足以下兩個條件之一:(1)能被4整除,但不能被100整除的年份都是閏年。(2)能被400整除的年份都

7、是閏年。10/10/2022133.4.1 if語句 if語句語法格式為:10/9/2023.4.1 if語句 分析:設(shè)變量year表示年份,判斷year是否滿足條件(1)的邏輯表達式是:year%4=0&year%100!=0條件(2)的邏輯表達式是:year%400=0兩者取“或”,即得判斷閏年的邏輯表達式: (year%4= =0&year%100!=0)|year%400= =0#include int main( ) int year; cout輸入年份:year; if(year%4=0 & year%100!=0 | year%400=0) coutyear是閏年endl; el

8、se cout year不是閏年score80為良,80score70為中等,70score60為及格,score60為不及格。#include int main()int score;cout score;if (score = 90) cout 優(yōu) = 80) cout 良 = 70)cout 中 = 60) cout 及格 endl;else cout 不及格 endl; return 0;10/10/202217【例3.4】輸入學生的成績score,按分數(shù)輸出其等級:sc3.4.2 嵌套if語句第二種是嵌套在if分支中為:if (表達式1) if (表達式2) 語句1; else 語句

9、2; 要特別注意else和if的配對關(guān)系。C+規(guī)定了if和else的“就近配對”原則,即相距最近且還沒有配對的一對if和else首先配對。 如果根據(jù)程序的邏輯需要改變配對關(guān)系,則要將屬于同一層的語句放在一對“”中。 10/10/2022183.4.2 嵌套if語句第二種是嵌套在if分支中為:10/93.4.2 嵌套if語句請看以下兩個語句:語句1:if(n%3=0) if(n%5=0) coutn“是15的倍數(shù)”; else coutn“是3的倍數(shù)但不是5的倍數(shù)”;語句2:if(n%3=0) if(n%5=0) coutn“是15的倍數(shù)”; else coutn“是3的倍數(shù)但不是5的倍數(shù)”en

10、dl;10/10/2022193.4.2 嵌套if語句請看以下兩個語句:10/9/2022條件運算符“?:”格式為:表達式1 ?表達式2 : 表達式3?!纠?.5】輸入一個字符,判別它是否為大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。分析:大寫字母轉(zhuǎn)換成小寫字母,由于小寫字母ASCII值比大寫字母ASCII值大32,所以加32可以實現(xiàn)大寫字母轉(zhuǎn)換成小寫字母。 10/10/202220條件運算符“?:”格式為:表達式1 ?表達式2 : 表達式3條件運算符“?:”#include int main( ) char ch; cinch; ch=(ch=A & ch

11、=Z)?(ch+32):ch; /判別ch是否大寫字母,是則轉(zhuǎn)換 coutchendl; return 0;10/10/202221條件運算符“?:”#include 3.4.3 swich語句用嵌套if語句可以實現(xiàn)多選一的情況。switch語句,稱為多分支語句(開關(guān)語句),可以用來實現(xiàn)多選一:switch語句語法格式為:switch (表達式) case常量表達式1: 語句序列1; break; case常量表達式2: 語句序列2; break; case常量表達式n: 語句序列n; break; default:語句序列n+1; 10/10/2022223.4.3 swich語句用嵌套if

12、語句可以實現(xiàn)多選一的情swich語句(1)各個case(包括default)分支出現(xiàn)的次序可以任意,通常將default放在最后。(2)break語句可選(3)每個常量表達式的取值必須各不相同 (4)允許多個常量表達式對應同一個語句序列。 (5)開關(guān)語句中限定了條件表達式的取值類型。 【例3.6】用switch語句實現(xiàn)例3.4的功能。 分析:由題意可知10分一個等級,采用score/10整除可以得到等級。10/10/202223swich語句(1)各個case(包括default)分支出swich語句#includeint main() int score; int a; coutscore;

13、 a=score/10; switch(a) case 10: case 9: cout 優(yōu) endl; break; case 8: cout 良 endl; break; case 7: cout 中 endl; break; case 6: cout 及格 endl; break; default: cout不及格 endl; return 0;10/10/202224swich語句#include10/3.5 循環(huán)結(jié)構(gòu)程序設(shè)計 3.5.1 while語句3.5.2 do- while語句3.5.3 for循環(huán)語句3.5.4 循環(huán)的嵌套3.5.5 轉(zhuǎn)向語句3.5.6 三種循環(huán)的比較10/

14、10/2022253.5 循環(huán)結(jié)構(gòu)程序設(shè)計 3.5.1 while語句10/3.5.1 while語句while語句的語法格式如下:while (表達式) 循環(huán)體語句10/10/2022263.5.1 while語句while語句的語法格式如下:13.5.1 while語句【例3.8】求1+2+3+100。分析:計算累加和需要兩個變量,設(shè)用變量sum存放累加和,變量i存放加數(shù)。重復將加數(shù)i加到sum中。#include int main( ) int i=1,sum=0; while (i=100) sum=sum+i; i+; coutsum=sumendl; return 0; 10/10

15、/2022273.5.1 while語句【例3.8】求1+2+3+13.5.2 do- while語句語法格式如下:do 循環(huán)體語句 while (表達式);10/10/2022283.5.2 do- while語句語法格式如下:10/9/3.5.2 do- while語句【例3.11】do-while語句求1+2+3+100#include int main( )int i=1,sum=0; do sum=sum+i; i+; while (i=100);coutsum=sumendl; return 0;10/10/2022293.5.2 do- while語句【例3.11】do-wh3.

16、5.2 do- while語句【例】輸入兩個正整數(shù),求它們最大公約數(shù)。分析:求最大公約數(shù)可以用“輾轉(zhuǎn)相除法”,方法如下:(1)比較兩數(shù),并使m大于n。(2)將m作被除數(shù),n作除數(shù),相除后余數(shù)為r。(3)將mn,nr;(4)若r=0,則m為最大公約數(shù),結(jié)束循環(huán)。若r0,執(zhí)行步驟步驟(2)和(3)。10/10/2022303.5.2 do- while語句【例】輸入兩個正整數(shù),求求兩個正整數(shù)最大公約數(shù)#include int main( ) int m,n,r,t;int m1,n1;coutm;coutn; m1=m; n1 = n; /保存原始數(shù)據(jù)供輸出使用 if(m n) t = m; m

17、= n; n = t; /m,n交換值 dor = m % n;m = n;n = r;while(r!=0);coutm1和n1的最大公約數(shù)是m; return 0;10/10/202231求兩個正整數(shù)最大公約數(shù)#include iostream計算級數(shù)和 #includeint main() int k; double sum,d,f; sum= 0;k= 1; f= 1; do d= 1.0/(k*(k+1); sum= sum+f*d; k= k+1; f= -f; while(d=1.0e-4); printf(sum= %lfn,sum); return 0;10/10/20223

18、2計算級數(shù)和 #include10/9/203.5.3 for循環(huán)語句for循環(huán)語句的語法格式如下:for(表達式1;表達式2;表達式3) 循環(huán)體語句該語句的執(zhí)行過程是圖3-14 10/10/2022333.5.3 for循環(huán)語句for循環(huán)語句的語法格式如下:13.5.3 for循環(huán)語句【例3.14】 求1+2+3+100。用for語句實現(xiàn)循環(huán)。#includeint main() int i,sum; sum=0; for(i=1;i=100;i+) sum=sum+i; coutsum=sumendl; return 0;10/10/2022343.5.3 for循環(huán)語句【例3.14】 求

19、1+2+3+3.5.3 for循環(huán)語句【例3.15】打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個“水仙花數(shù)”,因為153=135333。分析:利用for循環(huán)控制100-999之間的數(shù),每個數(shù)分解出個位,十位,百位;然后判斷立方和是否等于該數(shù)本身。10/10/2022353.5.3 for循環(huán)語句【例3.15】打印出所有的“水仙打印出所有的“水仙花數(shù)” #include int main() int a,b,c;for(int i=100;i1000;i+)a=i%10; /分解出個位b=(i/10)%10; /分解出十位c=i/10

20、0; /分解出百位if(a*a*a+b*b*b+c*c*c=i)coutit;coutendl; return 0;10/10/202236打印出所有的“水仙花數(shù)” #include iostrea省略for循環(huán)語句中的表達式for循環(huán)語句中3個表達式都可省略。(1) for語句中的“表達式1”一般用于給循環(huán)變量賦初值;如果省略for語句中的“表達式1”,此時應在for語句之前給循環(huán)變量賦初值。(2) for語句中的“表達式2”一般用于判斷循環(huán)結(jié)束條件;如果表達式2省略,即不判斷循環(huán)條件,循環(huán)無終止地進行下去。也就是認為表達式2始終為真。 (3) for語句中的“表達式3”一般用于循環(huán)變量的增

21、量;如果表達式3省略,則循環(huán)變量的增量應在循環(huán)體內(nèi)實現(xiàn)。(4) 如果省略for語句中的3個表達式,則成為以下形式:for( ; ; )10/10/202237省略for循環(huán)語句中的表達式for循環(huán)語句中3個表達式都可省3.5.4 循環(huán)的嵌套 在一個循環(huán)的循環(huán)體中又包含另一個循環(huán)語句,稱為循環(huán)嵌套。嵌套層次一般不超過3層,以保證可讀性。 10/10/2022383.5.4 循環(huán)的嵌套 在一個循環(huán)的循環(huán)體中又包含3.5.4 循環(huán)的嵌套 【例3.16】輸出一個金字塔圖形。分析:利用雙重for循環(huán),外循環(huán)控制層,內(nèi)循環(huán)控制星號個數(shù)。該圖形有10層,可用外循環(huán)控制。第1層有1個星號,第2層有3個星號,第

22、3層有5個星號,可用公式j(luò) = 2*i-1表示。其中,i表示層數(shù),j表示該層星號的數(shù)量。還需要用setw( )控制每層輸出星號的起始位置。10/10/2022393.5.4 循環(huán)的嵌套 【例3.16】輸出一個金字塔圖形金字塔圖形#include #includeint main() int i,j; for(i=1;i=10;i+) coutsetw(20-i); for(j=1;j2*i;j+) cout*; coutendl; return 0;10/10/202240金字塔圖形10/9/202240金字塔圖形【例3.18】計算并輸出10以內(nèi)(包括10)所有自然數(shù)的階乘值。即計算1!,2!

23、,3!,4!,5!,6!,7!,8!,9!,10!。#include int main() int n,k; double s; for (n=1;n=10;n=n+1) s=1.0; for (k=1; k=n; k=k+1) s=s*k; printf(%2d!=%fn ,n,s); return 0;10/10/202241金字塔圖形【例3.18】計算并輸出10以內(nèi)(包括10)所有自3.5.5 轉(zhuǎn)向語句這一類語句的功能是改變程序的流程,是非結(jié)構(gòu)化語句。1. break語句break語句的一般形式為: break;該語句只能用于兩種情況:(1)用在switch結(jié)構(gòu)中,當某個case子句執(zhí)行

24、完后,使用break語句跳出switch結(jié)構(gòu)。(2)用在循環(huán)結(jié)構(gòu)中,用break語句來結(jié)束循環(huán)。如果在嵌套循環(huán)中,break語句只能結(jié)束其所在的那層循環(huán)。2.continue語句continue語句的一般形式為: continue;該語句只能用在循環(huán)結(jié)構(gòu)中。當在循環(huán)結(jié)構(gòu)中遇到continue語句時,則跳過continue語句后的其它語句結(jié)束本次循環(huán),并轉(zhuǎn)去判斷循環(huán)控制條件,以決定是否進行下一次循環(huán)。10/10/2022423.5.5 轉(zhuǎn)向語句這一類語句的功能是改變程序的流程,是非3.5.5 轉(zhuǎn)向語句【例3.21】 輸出0100之間所有不能被3整除的數(shù)。#includeint main() in

25、t i; for(i=0;i=100;i+) if(i%3=0) continue; coutiendl; return 0; 對比結(jié)果:#includeint main() int i; for(i=0;i=100;i+) if(i%3=0) break; coutiscore; if (score=0) / 表達式為真,轉(zhuǎn)移到loop標號處 goto loop;10/10/2022443goto語句goto語句和標號語句一起使用,所謂標號語句4return語句return語句用于結(jié)束函數(shù)的執(zhí)行,返回到調(diào)用者,如果是主函數(shù),則返回至操作系統(tǒng)。利用一個return語句可以將一個數(shù)據(jù)返回給調(diào)用者

26、。通常,當函數(shù)的返回類型為void時, return語句可以省略,如果使用也僅作為函數(shù)或程序結(jié)束的標志。10/10/2022454return語句return語句用于結(jié)束函數(shù)的執(zhí)行,返回3.6 常用算法及應用實例3.6.1 累加與累乘累加與累乘是最常見的一類算法,這類算法就是在原有的基礎(chǔ)上不斷地加上或乘以一個新的數(shù)。 【實例一】求數(shù)列2/3, 4/5, 6/7, 前30項的和。分析:該數(shù)列的通式為2n/(2n+1) #include int main() double sum=0; for(int i=1;i=30;i+)sum+=2.0*i/(2.0*i+1);coutsumendl; re

27、turn 0;10/10/2022463.6 常用算法及應用實例3.6.1 累加與累乘10/93.6.2 求最大數(shù)、最小數(shù)求數(shù)據(jù)中的最大數(shù)和最小數(shù)的算法是類似的,可采用“打擂”算法。以求最大數(shù)為例,可先用其中第一個數(shù)作為最大數(shù),再用其與其它數(shù)逐個比較,并找到的較大的數(shù)替換為最大數(shù)?!緦嵗壳髤^(qū)間100, 200內(nèi)10個隨機整數(shù)中的最大數(shù)、最小數(shù)和平均值。分析:隨機函數(shù)rand()返回一個032767之間的隨機整數(shù),為了生成區(qū)間m, n之間的隨機整數(shù),可使用公式 (rand()%(n - m + 1) + m)。故產(chǎn)生區(qū)間100, 200內(nèi)隨機整數(shù)的計算公式為:rand()%101+100。1

28、0/10/2022473.6.2 求最大數(shù)、最小數(shù)求數(shù)據(jù)中的最大數(shù)和最小數(shù)的算法#include #include #include#include int main()int max, min,x;x=rand()%101+100; /產(chǎn)生一個100, 200之間的隨機數(shù)xcoutsetw(4)x; max = x; min =x; / 設(shè)定最大數(shù)和最小數(shù) for(int i=1;i10;i+)x=rand()%101+100; /再產(chǎn)生一個100, 200之間隨機數(shù)xcoutsetw(4) max)max = x; / 若新的隨機數(shù)大于最大數(shù),則替換 if(x min)min = x; /

29、 若新的隨機數(shù)小于最小數(shù),則進行替換 coutendl最大數(shù):max,最小數(shù):minendl; return 0;10/10/202248#include 10/9/20223.6.3 求素數(shù)素數(shù)是除1和本身,不能被其它任何整數(shù)整除的整數(shù)。判斷一個數(shù)m是否為素數(shù),只要依次用2, 3, 4, , m-1作除數(shù)去除m,只要有一個能被整除,m就不是素數(shù)?!緦嵗摹繌逆I盤上輸入一個大于2的自然數(shù),判斷其是否為素數(shù)。分析:可使用一個邏輯變量flag來表示自然數(shù)m是否為素數(shù)。首先標志flag默認為true,然后循環(huán)判斷m能否被2, 3, 4, , m-1整除,只要有一個整除,就可停止循環(huán)并修改標志flag

30、,根據(jù)標志flag是否被修改即可知道m(xù)是否是素數(shù)。10/10/2022493.6.3 求素數(shù)素數(shù)是除1和本身,不能被其它任何整數(shù)整除#include int main() int m,i;bool flag;cout輸入整數(shù)m:m; flag = true; /設(shè)標志為true for(i=2;im;i+) if (m%i=0) /能被i整除 flag=false; /設(shè)標志為false break; /只要有一個整除,m不是一個素數(shù)就可停止 if(flag=true) /根據(jù)標記flag輸出判斷結(jié)果 cout m是素數(shù)endl; else cout m不是素數(shù)endl; return 0;1

31、0/10/202250#include 10/9/20223.6.4 枚舉法枚舉法又稱為窮舉法,此算法將所有可能出現(xiàn)的情況一一進行測試,從中找出符合條件的所有結(jié)果。如計算“百錢買百雞”問題,又如列出滿足x*y=100的所有組合等?!緦嵗抗u每只5元,母雞每只3元,小雞3只1元,現(xiàn)要求用100元錢買100只雞,問公雞、母雞和小雞各買幾只?10/10/2022513.6.4 枚舉法枚舉法又稱為窮舉法,此算法將所有可能出現(xiàn)#include #include #includeint main()int x,y,z;for(x=0;x=100;x+) /可優(yōu)化為x=19for(y=0 ;y100;y

32、+)/ 可優(yōu)化為y=33z=100-x-y;if(5*x+3*y+z/3.0=100) coutxyzendl; return 0;10/10/202252#include 10/9/20223.6.5 遞推與迭代 利用遞推算法或迭代算法,可以將一個復雜的問題轉(zhuǎn)換為一個簡單過程的重復執(zhí)行。這兩種算法的共同特點是,通過前一項的計算結(jié)果推出后一項。不同的是,遞推算法不存在變量的自我更迭,而迭代算法則在每次循環(huán)中用變量的新值取代其原值。一、遞推【實例七】輸出(Fibonacci)數(shù)列的前20項。即1,1,2,3,5,8,。分析:設(shè)數(shù)列中相鄰的3項分別為變量f1、f2和f3,則有如下遞推算法:(1)f

33、1和f2的初值為1。(2)每次執(zhí)行循環(huán),用f1和f2產(chǎn)生后項,即f3 = f1 + f2。(3)通過遞推產(chǎn)生新的f1和f2,即f1 = f2,f2 = f3。(4)如果未達到規(guī)定的循環(huán)次數(shù),返回步驟2;否則停止計算。10/10/2022533.6.5 遞推與迭代 利用遞推算法或迭代算法,可以#include #include int main()long f1, f2, f3; f1 = 1; f2 = 1; / 初始條件 coutf1endlf2endl; for(int i=3;i=20;i+)f3=f1+f2; /遞推公式 coutf3endl;f1 = f2; f2 = f3; /遞推

34、公式 return 0;輸出(Fibonacci)數(shù)列的前20項10/10/202254#include 輸出(Fibona二、迭代在工程技術(shù)中,經(jīng)常使用數(shù)值算法來求解超越方程和代數(shù)方程的根。解決這類問題,一般采用“迭代法”。3.6.5 遞推與迭代10/10/202255二、迭代3.6.5 遞推與迭代10/9/202255【實例九】迭代法求a的平方根。求平方根的公式為:xn+1= (xn+a/xn) /2,求出的平方根精度是前后項差絕對值小于10-5。#include #include int main() float a; /* 被開方數(shù) */ float x0, x1; /* 分別代表前一

35、項和后一項 */ cout Input a positive number:a; x0 = a / 2; /* 任取的初值 */ x1 = (x0 + a / x0) / 2;3.6.5 遞推與迭代10/10/202256【實例九】迭代法求a的平方根。求平方根的公式為:xn+1= 3.6.5 遞推與迭代 while (fabs(x1 - x0) = 1e-5) /*fabs(x)函數(shù)用來求參數(shù)x絕對值*/ x0 = x1; x1 = (x0 + a / x0) / 2; coutThe square root is x1; return 0;10/10/2022573.6.5 遞推與迭代 wh

36、ile (fabs(x1 - 3.7 程序的調(diào)試程序的錯誤可以分為:編譯錯誤、連接錯誤及運行錯誤。Visual C+集成環(huán)境中編譯器能夠發(fā)現(xiàn)編譯錯誤(即語法錯誤)和連接錯誤。編譯錯誤通常是編程者違反了C+語言的語法規(guī)則,如保留字輸入錯誤、大括號不匹配、語句少分號等。連接錯誤通常由于未定義或未指明要連接的函數(shù),或者函數(shù)調(diào)用不匹配等,對系統(tǒng)函數(shù)的調(diào)用必須通過“include”說明。10/10/2022583.7 程序的調(diào)試程序的錯誤可以分為:編譯錯誤、連接錯誤及3.7 程序的調(diào)試在程序運行時,也會產(chǎn)生運行錯誤。對于運行錯誤,在Visual C+集成環(huán)境中,提供了調(diào)試器,能跟蹤程序的運行過程。它可以一行一行(單步)地執(zhí)行程序源代碼,以觀察程序的運行過程中,哪些語句執(zhí)行了,哪些語句沒有執(zhí)行,執(zhí)行的順序如何以及內(nèi)存中各變量當前的值。從而確定應用程序在運行的各個階段發(fā)生了什么,以及是如何發(fā)生的。Visual C+提供的調(diào)試技術(shù)包括單步運行和斷點運行,設(shè)置中斷表達式和監(jiān)視表達式,顯示變量的動態(tài)值等。10/10/2022593.7 程序的調(diào)試在程序運行時,也會產(chǎn)生運行錯誤。對于運行3.7 程序的調(diào)試調(diào)試工具欄 10/10/2022603.7 程序的調(diào)試調(diào)試工具欄 10/9/2022603.7.1 進入調(diào)試首先完成編譯連接,只有編譯連接正確,

溫馨提示

  • 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

提交評論