《循環(huán)結(jié)構(gòu)程序設(shè)計》課件_第1頁
《循環(huán)結(jié)構(gòu)程序設(shè)計》課件_第2頁
《循環(huán)結(jié)構(gòu)程序設(shè)計》課件_第3頁
《循環(huán)結(jié)構(gòu)程序設(shè)計》課件_第4頁
《循環(huán)結(jié)構(gòu)程序設(shè)計》課件_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3講循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)的定義反復(fù)執(zhí)行相同的語句序列while循環(huán)格式:while(表達(dá)式)語句序列語句序列稱為循環(huán)體,當(dāng)為一條語句時,表示復(fù)合語句的可以省略。表達(dá)式可以為任何類型先判斷,后執(zhí)行,若條件不成立,有可能一次也不執(zhí)行。語句序列中必須有改變while后面括號的表達(dá)式值的語句,否則有可能死循環(huán)。問題描述:笑笑作為數(shù)學(xué)課代表,每次考試后,數(shù)學(xué)老師都會讓他統(tǒng)計成績,老師并不關(guān)心具體某個人的成績,而只關(guān)心參加考試的人數(shù)、平均成績、最低分和最高分。輸入要求:第1行輸入T,表示組數(shù),第二行輸入一些 整數(shù),表示學(xué)生的成績,每個數(shù)之間用一個空格分開,-1表示輸入結(jié)束。輸出要求:占4行,第一行表示學(xué)

2、生人數(shù)n,第二行表示最高分,第三行表示最低分,第四行表示平均分,其中只有平均分是小數(shù)(只保留一位小數(shù)),其余為整數(shù) 輸入實(shí)例:1 50 90 87 67 84 99 56 74 82 94 -1輸出實(shí)例:10 100 50 78.3回文數(shù)問題描述:輸入一個整數(shù),判斷一個該數(shù)是否為回文數(shù)。輸入要求:輸入一系列的整數(shù)n,n100000000輸出要求:如果是回文數(shù)輸出Yes,如果不是回文數(shù)輸出No輸入樣例:1234 121 -12321 100輸出樣例:No Yes Yes No 素數(shù)因子問題描述:輸入一個整數(shù),輸出它的所有素數(shù)因子輸入要求:輸入一系列的整數(shù)(0,1,-1除外),每行一個輸出要求:輸

3、出所有的素數(shù)因子,每個因子之間用1個空格分開,最后一個因子后面沒有空格輸入樣例: 8 30 125輸出樣例:2 2 2 2 3 5 5 5 5#includeusing namespace std;int main()int m,k=2;cinm;if(m0)cout-;m=-m;while(km)if(m%k=0)coutk ;m=m/k;elsek+;coutmendl;return 0;6174數(shù)字黑洞問題描述:任意一個每位數(shù)字不完全相同的4位正整數(shù),將各位上數(shù)字重新組合成一個最大數(shù)和一個最小數(shù)相減,重復(fù)這個過程,必定得到6174。輸入要求:輸入一系列的4位正整數(shù),占一行。輸出要求:占一

4、行,最終得到6174的變換次數(shù)。輸入樣例:1234 1000 6174輸出樣例:3 5 0愛因斯坦走樓梯:有一條長階梯,若每步跨2階,則最后剩1階;若每步跨3階,則最后剩2階;若每步跨5階,則最后剩4階;若每步跨6階,則最后剩5階;若每步跨7階,則最后正好一階不剩;問該樓梯最少有多少階?#includeusing namespace std;int main()int n=7;while(n%2!=1)|(n%3!=2)|(n%5!=4)|(n%6!=5) n=n+7;coutnendl;return 0;#includeusing namespace std;int main()int n=

5、7;while(!(n%2=1)&(n%3=2)&(n%5=4)&(n%6=5) n=n+7;coutnendl;return 0;do while 循環(huán)語句格式:do語句序列 while(表達(dá)式);最大公約數(shù)和最小公倍數(shù)問題描述:從鍵盤上輸入兩個整數(shù),求它們的最大公約數(shù)和最小公倍數(shù)。輸入要求:每行輸入兩個整數(shù),每個整數(shù)之間用一個空格分開。輸出要求:第一行輸出最大公約數(shù),第二行輸出最小公倍數(shù)輸入樣例:3 6 24 13輸出樣例:3 6 1 312問題描述:計算與正整數(shù)n相等的二進(jìn)制代碼中有1和0的個數(shù)。輸入要求:輸入一些正整數(shù),每個占一行輸出要求:占兩行,第一行是1的個數(shù),第二行是0的個數(shù)。輸

6、入樣例:8 93輸出樣例:1 3 5 2Cantor表問題描述:現(xiàn)代數(shù)學(xué)的著名證明之一是Georg Cantor證明了有理數(shù)是可以枚舉的。他利用下面一張表來證明這一命題:1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/43/1 3/2 3/3 4/1 4/2 5/1 我們以Z字型給上表每一項編號 。第1項是1/1 ,然后第2項是1/2,2/1,3/1,2/2.輸入描述:整數(shù)N(1N10000000)輸出描述:表中的第N項 樣例輸入:7樣例輸出:1/4#includeusing namespace std;int main()int n,i,j;cinn;i=0;/斜線序號j

7、=n;/第n項在某行的位置doi+;j=j-i;while(j0);j=j+i;if(i%2=0) coutj/i+1-jendl;else couti+1-j/jendl;return 0;角谷猜想問題描述:定義這樣一個整數(shù)函數(shù)f(n),當(dāng)n是偶數(shù)時,f(n)=n/2;當(dāng)n是奇數(shù)時,f(n)=(3n+1)/2。這個猜想是說:對于任意的整數(shù)n,計算f(n),f(f(n),f(f(f(n),.,若干步之后,總會得到1。對于給定的n,求出數(shù)字序列中第一次出現(xiàn)1的步數(shù)。輸入要求:輸入一些正整數(shù)n,每個正整數(shù)占一行。輸出要求:占一行,輸出對應(yīng)n得到1的步數(shù)。輸入樣例:5 10輸出樣例:4 5while

8、語句和dowhile語句 比較while語句是先判斷后執(zhí)行,只要不滿足條件,循環(huán)體語句根本不會執(zhí)行 dowhile語句是先執(zhí)行后判斷,不管條件是否滿足,循環(huán)體語句總會執(zhí)行一次 #include using namespace std;int main() int i,sum=0; cini; while(i=10) sum+=i;i+; coutsumendl; return 0;#include using namespace std;int main() int i,sum=0; cini; do sum+=i; i+; while(i=10); coutsumendl; return 0

9、;for循環(huán)語句格式:for (;) 語句序列語句序列稱為循環(huán)體。當(dāng)語句序列只有單條語句,表示復(fù)合語句的可以省略。表達(dá)式1一般為賦值表達(dá)式,給控制變量賦初值;如果省略表達(dá)式1,這時for語句為如表達(dá)式2一般為關(guān)系表達(dá)式或邏輯表達(dá)式,稱為循環(huán)控制條件表達(dá)式3一般為賦值表達(dá)式,給控制變量增量或減量for(;)。 轉(zhuǎn)移語句continue語句形式:continue;功能:結(jié)束本次循環(huán),開始下一次循環(huán)continue只能用在循環(huán)結(jié)構(gòu)中,而不能用于其它控制結(jié)構(gòu) #includeusing namespace std;int main() int k; for(k=100;k=200;k+) if(k%3

10、=0) continue;coutk“ “; return 0;break語句 格式:break;功能:跳出switch結(jié)構(gòu)或結(jié)束本層循環(huán)。說明:break語句只能用于switch或循環(huán)結(jié)構(gòu)中 #includeusing namespace std;#define PI 3.1415926int main() int r; double area; for(r=1;r100.0) break;coutareaendl; return 0;階乘之和問題描述:求非負(fù)整數(shù)的階乘之和輸入要求:輸入一個非負(fù)整數(shù)n(n13),占一行輸出要求:占一行,階乘的和輸入樣例:0 5 12輸出樣例:1 154 52

11、2956314 #include#includeusing namespace std;int main() int i,sum,p,n; while(cinn) sum=0; p=1;if(n0) exit(0); for(i=1;i=n;i+) p=p*i;sum=sum+p; coutsum+1endl; return 0;分?jǐn)?shù)數(shù)列問題描述:已知分?jǐn)?shù)數(shù)列 2/1,-3/2,5/3,-8/5, 對于輸入的正整數(shù)n,輸出對應(yīng)項的分?jǐn)?shù)。輸入要求:輸入一些 正整數(shù)n(n50),分別占一行。輸出要求:占一行,表示分?jǐn)?shù)數(shù)列中的對應(yīng)項。輸入樣例:3 26輸出樣例:5/3 -317811/196418

12、#includeusing namespace std;int main()int a=2,b=1,i;int n;cinn;for(i=2;i=n;i+)a=a+b;b=a-b;if(n%2=0) cout-1*a/bendl;else couta/b4),每個數(shù)占一行。輸出要求:占一行,兩個素數(shù)的和。輸入樣例:4 20輸出樣例:2+2 3+17#include#include#includeusing namespace std;int main()int i,p,q,n,p_flag,q_flag;while(cinn)if(n%2=1)|n4) /cout數(shù)據(jù)輸入出錯n”; exit(

13、0);p=1;dop=p+1;q=n-p;p_flag=1;for(i=2;i=sqrt(p);i+) if(p%i=0) p_flag=0;break; q_flag=1; if(p_flag=1)for(i=2;i=sqrt(q);i+) if(q%i=0) q_flag=0; break; while(p_flag*q_flag=0);coutp+qendl;return 0;絕對素數(shù)問題描述:如果一個正整數(shù)是素數(shù),它的反位數(shù)也是素數(shù),這稱這樣的數(shù)為絕對素數(shù)。輸入要求:輸入一些正整數(shù)n,每個占一行輸出要求:占一行,輸出1到n之間名絕對素數(shù)的個數(shù)。輸入樣例:10 20輸出樣例: 4 7#include#includeusing namespace std;int main() int i,j,k,m,flag1=0,flag2=0,ans=

溫馨提示

  • 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

提交評論