實驗5循環(huán)結(jié)構(gòu)程序設(shè)計資料_第1頁
實驗5循環(huán)結(jié)構(gòu)程序設(shè)計資料_第2頁
實驗5循環(huán)結(jié)構(gòu)程序設(shè)計資料_第3頁
實驗5循環(huán)結(jié)構(gòu)程序設(shè)計資料_第4頁
實驗5循環(huán)結(jié)構(gòu)程序設(shè)計資料_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

1、循環(huán)結(jié)構(gòu)程序設(shè)計【實驗?zāi)康摹空莆?for、 while 和 do-while 三種基本的循環(huán)結(jié)構(gòu)。掌握循環(huán)結(jié)構(gòu)的嵌套,重點是雙重嵌套。實驗 5.1 編寫程序,計算10!。這是一道累乘數(shù)字的題。一般的方法是: 設(shè) s 是保存結(jié)果的變量,n 為乘數(shù), 步驟如下:1) 為 s 和 n 賦初值: s = 1,n=1。( 2)將 n 與 sum 相乘,并把結(jié)果送回 sum,即 sum = sum * n 。( 3)將 n 增加 1,重復(fù)( 2)直至 n 為 10。這樣就可以判斷用循環(huán)結(jié)構(gòu)來實現(xiàn)。由于循環(huán)次數(shù)也很確定,宜采用for 循環(huán)。當(dāng)然也可以用 while 或 do-while 循環(huán)實現(xiàn)。下面給出了

2、while 實現(xiàn)的參考代碼。希望同學(xué)改用for 循環(huán)和 do-while循環(huán)再做一遍,看是否得到同樣的結(jié)果。另外要注意的是由于10!是一個很大的數(shù),要意識到這個數(shù)是否超出整型數(shù)所能表示的范圍,本題是可以的。假設(shè)要計算13!就超出了整型的范圍,此時就要定義float 型或 double 型的變量來存放計算結(jié)果。【參考程序】#include void main()int n = 1, s = 1;while(n =10)s = s * n;n += 1;printf( “10! = %dn ”, s);答案:#includestdio.hmain()int n=1,s=1;for(n=1;n0)m

3、+;if(a0)n+;scanf(%lf,&a);printf(%d%d%d,m+n,m,n);實驗 5.4 計算 1-3+5-7+ ,-99+101 的值,并輸出結(jié)果。【提示】1) 先考慮 1+3+5+7+ , +99+101 ,這樣可以看出步長為 2。( 2)再考慮符號。將 1-3+5-7+ , -99+101看成 1+(-3)+5+(-7)+ , +(-99)+101 ,這樣還可以歸結(jié)到累加和。( 3)接下來考慮是否可以用一個臨時變量temp 來存放符號,初值 temp = 1,每經(jīng)過一次循環(huán) temp 變號,這樣第二次循環(huán)temp = -1 。也就是奇數(shù)次循環(huán)時 temp = 1,偶數(shù)

4、次循環(huán) temp = -1。這樣,將 temp 與 n 相乘就能得到參與累加的每一項。每次累加之前:temp = temp * (-1)即可實現(xiàn)變號問題。實驗 5.5 計算 的近似值, 的計算公式為:224 262(2n) 2 = 233557(2n1)(2n1)1實驗 5.6編寫程序,計算1!+ 2! + 3!+ ,+ 10!?!咎崾尽坑蓪嶒?5.1 可以得到n!的求法,再實現(xiàn)累加即可。這里需要考慮雙重循環(huán)結(jié)構(gòu)。(1) 外層循環(huán)i 從 1 變化到 10,內(nèi)層循環(huán)j 從 1 變化到 i。在內(nèi)層循環(huán)中計算 p=i! 。在外層循環(huán)中計算 s=s+p。#includestdio.hvoid main

5、()int i,j,p,s=0;for(i=1;i=10;i+)p=1;for(j=1;j=i;j+)p=p*j;s=s+p;printf(%dn,s);答案:#include void main() int s=0,i,p,j; for(i=1;i=10;i+)p=1;for(j=1;j=i;j+)p=p*j;s=s+p;printf(%dn,s);實驗 5.7 我國古代數(shù)學(xué)家在算經(jīng)中出了一道題: “雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞。問雞翁、雞母、雞雛各幾只?”意思是:公雞每只5 元,母雞每只 3 元,小雞三只1 元;用 100 元買 100 只雞,問公雞、母雞、小

6、雞各買多少只?【指導(dǎo)】算法分析:此題用代數(shù)方法是無法求解的,因為 3 個未知數(shù),只有兩個方程,可能有多解或無窮多解??梢杂谩懊杜e法”來解此問題。所謂枚舉,就是一一列舉各種可能,判斷出滿足條件的那些可能。本題中可設(shè)公雞數(shù)為x 只,母雞數(shù)為y 只,小雞數(shù)為z 只。考慮到每一種雞至少買一只,顯然搜索范圍為:1 x18、 1y 31、 1 z 98。這樣就可以用三重循環(huán)來得到 x、y、z 的不同組合,并測試每組 x、 y、 z 是否滿足 5x+3y+z/3=100 和 z 能被 3 整除這兩個條件, 并輸出所有符合條件的組合。若先確定 x 和 y 的搜索范圍,即 1x 18、 1 y 31,搜索方法是

7、依次變化x、y,而 z=100-x-y ,這樣就可以用兩重循環(huán)來得到x、y、z 的不同組合,并測試每組 x、 y、 z 是否滿足 5x+3y+z/3=100 和 z 能被 3 整除這兩個條件,并輸出所有符合條件的組合。有興趣的同學(xué)可以進一步考慮對兩個已有方程進行消元變換得到單個方程,進而用單層循環(huán)也能求解本題。二重循環(huán)參考程序:#include void main() int x, y, z;printf(cock hen chickn); for (x=1;x=18;x+)for (y=1;y=31;y+) z=100-x-y;if (5*x+3*y+z/3)=100 & z%3=0)pri

8、ntf(%dt%dt%dn,x,y,z);#includestdio.hvoid main()int i,j,k;for(i=1;i=18;i+)for(j=1;j=31;j+)k=100-i-j;if(5*i+3*j+k/3=100 & k%3=0)printf( 可買 %d 只公雞、 %d 只母雞、 %d 只小雞 n,i,j,k);答案:#includevoid main() int x, y, z;printf(cockhenchickn);for (x=1;x=18;x+)for (y=1;y=31;y+) z=100-x-y;if (5*x+3*y+z/3)=100 & z%3=0)

9、printf(%dt%dt%dn,x,y,z);實驗 5.8 打印出所有“水仙花數(shù)” 。所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字的立方和正好等于該數(shù)本身。例如: 153 是一個“水仙花數(shù)” , 因為 153=1 3+53+33?!緟⒖汲绦?】#include void main() int m,i,j,k;for(m=100;m1000;m+)i=m/100;/百位數(shù)j=(m-100*i)/10;/十位數(shù)k=m%10;/ 個位數(shù)if(i*i*i+j*j*j+k*k*k=m)printf(%d,m);/水仙花數(shù)方法 2:設(shè)百位數(shù)為 i、十位數(shù)為 j、個位數(shù)為 k,它們可以組成一個三位數(shù),再判斷

10、這個三位數(shù)是否為水仙花數(shù)??梢杂萌匮h(huán)編程?!緟⒖汲绦?】#include void main() int m,i,j,k; for(i=1;i10;i+)for(j=0;j10;j+)for (k=0;k10;k+) m=100*i+10*j+k; if(i*i*i+j*j*j+k*k*k=m)printf(%d,m);/水仙花數(shù)實驗 5.9 一個球從100 米高度自由下落,每次落地后反跳回原來高度的一半,再落下。求它在第 10 次落地時,共經(jīng)過多少米?落地10 次后反彈高度是多少?編制程序解決這一問題?!局笇?dǎo)】這個問題可以用“遞推法”解決?!斑f推法”也叫“迭代法”,其基本思想是把一個復(fù)雜的計算過程轉(zhuǎn)化為簡單過程的多次重復(fù)。每次重復(fù)都從舊值的基礎(chǔ)上遞推出新值,并由新值代替舊值。遞推法的主要步驟為:1)確定初始值,這是循環(huán)開始的條件;2)找出遞推或迭代公式,這是反復(fù)遞推的過程。算法分析:( 1)確定兩個初始值:用s 表示小球經(jīng)過的距離,第一次落地時,s=100;用 x 表示小球落地后反彈的高度,第一次落地時,x=50;2)遞推公式

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論