C第3章程序舉例_第1頁
C第3章程序舉例_第2頁
C第3章程序舉例_第3頁
C第3章程序舉例_第4頁
C第3章程序舉例_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C第3章程序舉例【例3-4】 設x與y有如下函數(shù)關(guān)系,試根據(jù)輸入的x值,求出分段函數(shù)y的值。2程序如下#include using namespace std;int main( ) float x,y; cout x; if (x0) y =x-7; else if (x 0) y =3*x*x; else y = 2; cout y=yendl; return 0;3【例3-7】任意輸入三個數(shù),按由大到小順序輸出。 #include using namespace std;int main( ) int a, b, c;cout a b c;if (a b) if (b c ) cout

2、a,b , c c ) cout a,c , bn; else cout c,a , b c ) cout b,a , cc) cout b,c , an; else cout c,b , an;return 0; 5例如:【例3-8 】編寫程序,求100個自然數(shù)的和即: s=1+2+3+ +100 思路:尋找加數(shù)與求和的規(guī)律 加數(shù)n從1變到100,每循環(huán)一次,使i增1,直到i的值超過100。n的初值設為1。求和設變量 sum 存放和,循環(huán)求sum=sum+n。 6算法和程序:#include using namespace std;int main( ) int n,sum;n=1; sum

3、=0; while (n=100) sum=sum+n; n +; cout sum=sumn;return 0;n: 循環(huán)控制變量sum: 累加器 n=1,sum=0 當n = 100 sum=sum+n n+輸出sum7do-while語句的簡單應用 【例3-9】用輾轉(zhuǎn)相除法求m和n的最大公約數(shù)。思路:先求m和n相除的余數(shù)r然后將mn,將nr,并判斷r或n如果r0,再重復求余數(shù),直到 r 等于 0 時完畢循環(huán)此時的m為最大公約數(shù)8算法和程序:#include using namespace std;int main( ) int m,n,r;cin mn; do r=m%n; m=n; n

4、=r; while(r!=0);cout 最大公約數(shù)是: m 2這是一種遞推算法,應采用循環(huán)實現(xiàn),其算法如圖3-18所示。設變量f1、f2和f3,并為f1和f2賦初值1,令f3=f1+f2得到第3項;將f1f2, f2f3,再求f3=f1+f2得到第4項;依此類推求第5項、第6項。10 輸出Fibonacci數(shù)列的算法 11#include const int N=20;using namespace std;int main( ) int i,f1,f2,f3;f1=f2=1;cout t f1 t f2;for (i=3; i=N; i+) f3=f1+f2; f1=f2; f2=f3;

5、cout t f3; if (i%5=0) cout n; return 0; 12for語句的簡單應用【例3-13 】求n! ,即計算p=123n的值。 思路:求階乘與求累加的運算處理過程類似,只要將“+變?yōu)椤?。設置:乘數(shù)i ,初值為1,終值為nn是循環(huán)控制終值,需要從鍵盤輸入累乘器 p ,每次循環(huán)令p = p*i13程序:#include using namespace std;int main( ) int i,n,p=1;cout n;for (i=1; i=n; i+) p = p * i;cout n != p n ;return 0; 思考:如何輸出1!, 2!, , n! ?

6、如何求s =1!+ 2!+ + n! ? 143.3.5 循環(huán)嵌套如果循環(huán)語句的循環(huán)體內(nèi)又包含了另一條循環(huán)語句,那么稱為循環(huán)的嵌套【例3-15】打印由數(shù)字組成的如下所示的金字塔圖案。 1 222 33333 4444444 555555555 66666666666 7777777777777 888888888888888 99999999999999999分析:打印圖案一般可由多重循環(huán)實現(xiàn),外循環(huán)用來控制打印的行數(shù),內(nèi)循環(huán)控制每行的空格數(shù)和字符個數(shù)。實現(xiàn)打印上金字塔圖案的程序如下。 15注意:#include using namespace std;int main( ) char c=4

7、8;int i, k, j;for(i=1;i=9;i+) / 外循環(huán)控制打印行數(shù) for(k=1;k=10-i;k+) /每行起始打印位置 cout ; for (j= 1 ; j= 2* i- 1 ; j+) / 內(nèi)循環(huán)控制打印個數(shù) cout (char)(c+i); /打印內(nèi)容數(shù)字字符19 cout n; / 換行return 0; 16應用舉例 【例3-15】判斷一個給定的數(shù)m是否為素數(shù)。如是素數(shù)那么輸出“Yes,不是那么輸出“No。分析:素數(shù)是指除了能被1和自身整除外,不能被其它整數(shù)整除的自然數(shù)。判斷一個整數(shù)m是否為素數(shù)的根本方法是:將m分別除以2,3,m-1,假設都不能整除,那么m

8、為素數(shù)。17程序代碼如下 #include using namespace std;int main( ) int j,m;cout m;if (m=0|m=1) coutNon;else for (j=2; j=m) cout Yesn; else cout Non;return 0; 18應用舉例 【例3-16】哥德巴赫猜測之一是,任何一個不小于6的偶數(shù)都可以表示為兩個素數(shù)之和。如:6=3+3,8=3+5,10=3+7等等,試編程序驗證。 分析:設n為大于等于6的任一偶數(shù),將其分解為n1和n2兩個數(shù),使得n1+n2=n,分別判斷n1和n2是否為素數(shù),假設都是,那么為一組解。假設n1不是素數(shù)

9、就不必再檢查n2是否為素數(shù)。先從n1=3開場,直到n1=n/2為止。 19程序代碼如下 #include #include using namespace std;int main( )int n, n1, n2, j, k, flag1, flag2;for (n=6; n100; n+=2) for (n1=3; n1=n/2; n1+) flag1=1; k=sqrt(n1); for (j=2; j=k; j+) if (n1%j=0) flag1=0; break; if (!flag1) continue; n2=n-n1; flag2=1;20程序代碼如下 k=sqrt(n2);

10、 for (j=2; j=k; j+) if (n2%j=0) flag2=0; break; if (flag2) cout n= n1+n2tt; break; coutn;return 0;21應用舉例 【例3-17】用迭代法求某個數(shù)的平方根。求平方根的迭代公式為:迭代法在數(shù)學上也稱“遞推法,都是由一給定的初值,通過某一算法或公式來獲得新值,再由新值按照同樣的算法獲得另一個新值,這樣經(jīng)過有限次即可求得問題的解。分析: (1) 估計一個初值x0=a/2.(2) 求出新值x1= (x0+a/x0)/2(3) 再以新值作為初值x0=x1,重復(2)(3) (4)迭代完畢的判定|x1-x0|(給

11、定的精度)22程序代碼如下 #include #include using namespace std;int main( )float x,x0,x1,a;cout a;if (fabs(a)0.000001) x=0;else if (a0) cout 0.000001) x0 = x1; x1 = 0.5 * (x0 + a/x0);x = x1;cout a s sqrt is x endl;return 0;24第3章作業(yè)一、單項選擇題:做在書上二、編程題:1,2,3抄寫例題:3-1 3-2 3-4 3-6 3-8 3-9 3-10 3-12 3-13 3-15 3-18 3-19 3-20 3-21編寫例3-19 ,輸出100200之間的素數(shù)。用for循環(huán)改寫例3-21。25例#include using namespace std;void main()int space=0

溫馨提示

  • 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

提交評論