第講程序控制結(jié)構(gòu)_第1頁
第講程序控制結(jié)構(gòu)_第2頁
第講程序控制結(jié)構(gòu)_第3頁
第講程序控制結(jié)構(gòu)_第4頁
第講程序控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3講 程序控制結(jié)構(gòu)1順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)2if語句 if (表達式) 語句1 else 語句2 關(guān)系表達式邏輯表達式數(shù)值表達式3 if (表達式) 語句1 else 語句2 簡單的語句復(fù)合語句另一個if語句等4最常用的3種if語句形式1. if (表達式) 語句1 (沒有else子句)2. if (表達式) 語句1 else 語句2 (有else子句)3. if(表達式) 語句 else if(表達式) 語句 else if(表達式) 語句 else if(表達式) 語句 else 語句m+1 (在else部分又嵌套了多層的if語句)5選擇結(jié)構(gòu)的嵌套一般形式:if( ) if( ) 語句

2、1 else 語句2 else if( ) 語句3 else 語句4 內(nèi)嵌ifelse總是與它上面最近的未配對的if配對6switch語句switch語句的一般形式:switch(表達式) case 常量1 :語句1 case 常量2 :語句2 case 常量n :語句n default : 語句n+1整數(shù)類型(包括字符型)7switch語句的作用是根據(jù)表達式的值,使流程跳轉(zhuǎn)到不同的語句switch語句的一般形式:switch(表達式) case 常量1 :語句1 case 常量2 :語句2 case 常量n :語句n default : 語句n+1不能相同8順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)9循環(huán)的定

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

4、二行表示最高分,第三行表示最低分,第四行表示平均分,其中只有平均分是小數(shù)(只保留一位小數(shù)),其余為整數(shù) 輸入實例:1 50 90 87 67 84 99 56 74 82 94 -1輸出實例:10 100 50 78.312回文數(shù)問題描述:輸入一個整數(shù),判斷一個該數(shù)是否為回文數(shù)。輸入要求:輸入一系列的整數(shù)n,n100000000輸出要求:如果是回文數(shù)輸出Yes,如果不是回文數(shù)輸出No輸入樣例:1234 121 -12321 100輸出樣例:No Yes Yes No 13有沒有其他方法?14水仙花數(shù)春天是鮮花的季節(jié),水仙花就是其中最迷人的代表,數(shù)學(xué)上有個水仙花數(shù),他是這樣定義的:“水仙花數(shù)”是

5、指一個三位數(shù),它的各位數(shù)字的立方和等于其本身,比如:153=13+53+33?,F(xiàn)在要求輸出所有在m和n范圍內(nèi)的水仙花數(shù)。輸入要求:輸入數(shù)據(jù)有多組,每組占一行,包括兩個整數(shù)m和n(100=m=n=999)。輸出要求:對于每個測試實例,要求輸出所有在給定范圍內(nèi)的水仙花數(shù),就是說,輸出的水仙花數(shù)必須大于等于m,并且小于等于n,如果有多個,則要求從小到大排列在一行內(nèi)輸出,之間用一個空格隔開;如果給定的范圍內(nèi)不存在水仙花數(shù),則輸出no;每個測試實例的輸出占一行。輸入樣例:100 120300 380輸出樣例:no370 371 15素數(shù)因子問題描述:輸入一個整數(shù),輸出它的所有素數(shù)因子輸入要求:輸入一系列

6、的整數(shù)(0,1,-1除外),每行一個輸出要求:輸出所有的素數(shù)因子,每個因子之間用1個空格分開,最后一個因子后面沒有空格輸入樣例: 8 30 125輸出樣例:2 2 2 2 3 5 5 5 516#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;176174數(shù)字黑洞問題描述:任意一個每位數(shù)字不完全相同的4位正整數(shù),將各位上數(shù)字重新組合成一個最大數(shù)和一個最小數(shù)相減,重復(fù)這個過程,必定得到6174。

7、輸入要求:輸入一系列的4位正整數(shù),占一行。輸出要求:占一行,最終得到6174的變換次數(shù)。輸入樣例:1234 1000 6174輸出樣例:3 5 018愛因斯坦走樓梯:有一條長階梯,若每步跨2階,則最后剩1階;若每步跨3階,則最后剩2階;若每步跨5階,則最后剩4階;若每步跨6階,則最后剩5階;若每步跨7階,則最后正好一階不剩;問該樓梯最少有多少階?19#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;20#includeus

8、ing 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;21do while 循環(huán)語句格式:do語句序列 while(表達式);22最大公約數(shù)和最小公倍數(shù)問題描述:從鍵盤上輸入兩個整數(shù),求它們的最大公約數(shù)和最小公倍數(shù)。輸入要求:每行輸入兩個整數(shù),每個整數(shù)之間用一個空格分開。輸出要求:第一行輸出最大公約數(shù),第二行輸出最小公倍數(shù)輸入樣例:3 6 24 13輸出樣例:3 6 1 31223問題描述:計算與正整數(shù)n相等的二進制代碼中有1和0的個數(shù)。輸入要求:輸

9、入一些正整數(shù),每個占一行輸出要求:占兩行,第一行是1的個數(shù),第二行是0的個數(shù)。輸入樣例:8 93輸出樣例:1 3 5 224Cantor表問題描述:現(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/425#includeusing names

10、pace std;int main()int n,i,j;cinn;i=0;/斜線序號j=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;26角谷猜想問題描述:定義這樣一個整數(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ù)占

11、一行。輸出要求:占一行,輸出對應(yīng)n得到1的步數(shù)。輸入樣例:5 10輸出樣例:4 527while語句和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; d

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

13、space std;int main() int k; for(k=100;k=200;k+) if(k%3=0) continue;coutk“ “; return 0;31break語句 格式:break;功能:跳出switch結(jié)構(gòu)或結(jié)束本層循環(huán)。說明:break語句只能用于switch或循環(huán)結(jié)構(gòu)中 32#includeusing namespace std;#define PI 3.1415926int main() int r; double area; for(r=1;r100.0) break;coutareaendl; return 0;33階乘之和問題描述:求非負整數(shù)的階乘之和

14、輸入要求:輸入一個非負整數(shù)n(n13),占一行輸出要求:占一行,階乘的和輸入樣例:0 5 12輸出樣例:1 154 522956314 34#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;35分數(shù)數(shù)列問題描述:已知分數(shù)數(shù)列 2/1,-3/2,5/3,-8/5, 對于輸入的正整數(shù)n,輸出對應(yīng)項的分數(shù)。輸入要求:輸入一些 正整數(shù)n(n

15、50),分別占一行。輸出要求:占一行,表示分數(shù)數(shù)列中的對應(yīng)項。輸入樣例:3 26輸出樣例:5/3 -317811/196418 36#includeusing namespace std;int main()int a=2,b=1,s=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+1739有沒有問題?40#include#include#includeusing namespace std;i

16、nt main()int i,p,q,n,p_flag,q_flag;cinn;if(n%2=1)|n4) cout數(shù)據(jù)輸入出錯n”; exit(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;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;41絕對素數(shù)問題描述:如果一個正整數(shù)是素數(shù),它的反位數(shù)也是素數(shù),這稱這樣的數(shù)為絕對素數(shù)。輸入要求:輸入一些正整數(shù)n,每個占一行輸出要求:占一行,輸出1到n之間名絕對素數(shù)的個數(shù)。輸入樣例:10 20輸出樣例: 4 742#include#includeusing namespace std;int main() int i,j,k,m,flag1=0,f

溫馨提示

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

評論

0/150

提交評論