




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C第3章程序舉例【例3-4】 設(shè)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的初值設(shè)為1。求和設(shè)變量 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 當(dāng)n = 100 sum=sum+n n+輸出sum7do-while語句的簡單應(yīng)用 【例3-9】用輾轉(zhuǎn)相除法求m和n的最大公約數(shù)。思路:先求m和n相除的余數(shù)r然后將mn,將nr,并判斷r或n如果r0,再重復(fù)求余數(shù),直到 r 等于 0 時(shí)完畢循環(huán)此時(shí)的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這是一種遞推算法,應(yīng)采用循環(huán)實(shí)現(xiàn),其算法如圖3-18所示。設(shè)變量f1、f2和f3,并為f1和f2賦初值1,令f3=f1+f2得到第3項(xiàng);將f1f2, f2f3,再求f3=f1+f2得到第4項(xiàng);依此類推求第5項(xiàng)、第6項(xiàng)。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語句的簡單應(yīng)用【例3-13 】求n! ,即計(jì)算p=123n的值。 思路:求階乘與求累加的運(yùn)算處理過程類似,只要將“+變?yōu)椤?。設(shè)置:乘數(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)實(shí)現(xiàn),外循環(huán)用來控制打印的行數(shù),內(nèi)循環(huán)控制每行的空格數(shù)和字符個數(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應(yīng)用舉例 【例3-15】判斷一個給定的數(shù)m是否為素?cái)?shù)。如是素?cái)?shù)那么輸出“Yes,不是那么輸出“No。分析:素?cái)?shù)是指除了能被1和自身整除外,不能被其它整數(shù)整除的自然數(shù)。判斷一個整數(shù)m是否為素?cái)?shù)的根本方法是:將m分別除以2,3,m-1,假設(shè)都不能整除,那么m
8、為素?cái)?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應(yīng)用舉例 【例3-16】哥德巴赫猜測之一是,任何一個不小于6的偶數(shù)都可以表示為兩個素?cái)?shù)之和。如:6=3+3,8=3+5,10=3+7等等,試編程序驗(yàn)證。 分析:設(shè)n為大于等于6的任一偶數(shù),將其分解為n1和n2兩個數(shù),使得n1+n2=n,分別判斷n1和n2是否為素?cái)?shù),假設(shè)都是,那么為一組解。假設(shè)n1不是素?cái)?shù)
9、就不必再檢查n2是否為素?cái)?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應(yīng)用舉例 【例3-17】用迭代法求某個數(shù)的平方根。求平方根的迭代公式為:迭代法在數(shù)學(xué)上也稱“遞推法,都是由一給定的初值,通過某一算法或公式來獲得新值,再由新值按照同樣的算法獲得另一個新值,這樣經(jīng)過有限次即可求得問題的解。分析: (1) 估計(jì)一個初值x0=a/2.(2) 求出新值x1= (x0+a/x0)/2(3) 再以新值作為初值x0=x1,重復(fù)(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è)一、單項(xiàng)選擇題:做在書上二、編程題: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之間的素?cái)?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)容里面會有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度公司對公司知識產(chǎn)權(quán)質(zhì)押借款協(xié)議
- 2025年度公益基金會災(zāi)害預(yù)防合作框架
- 億渡數(shù)據(jù):中國康復(fù)行業(yè)短報(bào)告
- 2025年度影視作品演員出演合同樣本
- 2025年度區(qū)塊鏈技術(shù)應(yīng)用增資擴(kuò)股協(xié)議
- 2025年度快遞配送與快遞網(wǎng)點(diǎn)建設(shè)合同
- 2025年度房產(chǎn)過戶房地產(chǎn)經(jīng)紀(jì)人服務(wù)協(xié)議
- 2025年度農(nóng)村鄰居土地界限確權(quán)與使用協(xié)議書
- 二零二五年度礦山股份合作協(xié)議書:礦山生態(tài)環(huán)境保護(hù)與修復(fù)
- 2025年度賓館客房客房服務(wù)員培訓(xùn)與勞務(wù)服務(wù)合同
- 《分類加法與分步乘法計(jì)數(shù)原理-習(xí)題課》名師課件
- 常見業(yè)務(wù)場景網(wǎng)絡(luò)安全建設(shè)VISIO圖合集(27個類型)v2023
- 無人機(jī)通信融合組網(wǎng)
- 七年級英語閱讀理解55篇(含答案)
- 臨床常見操作-灌腸
- 三年級下冊 道德與法治 全冊教案
- 2024年安徽合肥中考數(shù)學(xué)試題及答案1
- 2024-2025學(xué)年全國中學(xué)生天文知識競賽備賽試題庫(含答案)
- 三水高樁碼頭施工組織設(shè)計(jì)方案
- 醫(yī)療器械的驗(yàn)收與管理制度
- 部編人教版七年級下冊道德與法治全冊課件
評論
0/150
提交評論