2.2.8循環結構程序設計 - 循環結構程序設計-專題輔導課件_第1頁
2.2.8循環結構程序設計 - 循環結構程序設計-專題輔導課件_第2頁
2.2.8循環結構程序設計 - 循環結構程序設計-專題輔導課件_第3頁
2.2.8循環結構程序設計 - 循環結構程序設計-專題輔導課件_第4頁
2.2.8循環結構程序設計 - 循環結構程序設計-專題輔導課件_第5頁
已閱讀5頁,還剩17頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C程序設計專題輔導課

循環結構程序設計

內容提要:循環結構3.1for語句一般形式:

for(表達式1;表達式2;表達式3)

循環體語句注意:for語句是一個整體,中間不能被打斷;循環體語句必須是一條語句(或復合語句)表達式1:初始化,循環開始之前執行1次表達式2:循環條件,每次循環前先判斷其值3.1for語句表達式3:每次循環體語句執行后,執行1次3個表達式及循環體語句的執行順序和書寫順序不同3個表達式都可以省略,但分隔符“;”不能省略表達式2省略表示循環條件永遠成立for(;;)while(1)3.1for語句常用循環變量控制形式:sum=0;

for(i=1;i<=100;i++)sum=sum+i;注意:循環變量i的值變化與循環執行的次數循環體語句向右縮進對齊循環過程中務必確保循環條件最終不成立3.2while語句一般形式:

while(表達式)

循環體語句注意:while語句是一個整體,中間不能被打斷;循環體語句必須是一條語句(或復合語句)表達式:可以是任意表達式每次循環開始前,都要先計算表達式的值3.3do-while語句一般形式:

do

循環體語句while(表達式)注意:do-while語句是整體,中間不能被打斷;循環體語句必須是一條語句(或復合語句)表達式:可以是任意表達式先執行循環體語句,再判斷表達式真假3.4三種循環語句的選擇理論上:三者可以相互轉換原則上:if(循環次數已知) 使用for語句else { /*循環次數未知*/

if(循環條件在進入循環時明確) 使用while語句

else /*循環條件需要在循環體中明確*/ 使用do-while語句}3.5break語句和continue語句作用:break結束循環,即使還剩有正常循環次數continue結束本次循環,提前進入到下一次循環適用范圍:break可用于循環和switch語句中Continue只能用于循環語句中3.6嵌套循環一個循環語句的循環體也是循環語句:sum=0;/*求1!+2!+…+n!*/for(i=1;i<=n;i++){item=1;for(j=1;j<=i;j++)item=item*j;sum=sum+item;}i循環(外循環)/j循環(內循環)變化關系3.7循環結構程序設計要點循環體:歸納出哪些操作需要反復執行循環控制條件:這些操作在什么情況下重復執行選擇循環結構for、while、do-while3.8舉例(1)1.判斷某個整數n是否“水仙花”數(即各位數字的立方和等于該數本身)?!痉治觥筷P鍵是求各位數字立方和:對整數n求第i位數字:bi=n%10,n=n/10求各位數字立方和:sum=∑bi*bi*bi循環體:bi=n%10,n=n/10,∑bi*bi*bi循環條件:n!=0

循環次數未知且至少做1次:用do-while3.8舉例(2)#include<stdio.h>int

main(void){

intn,m,b,sum;

scanf(“%d”,&n);sum=0;m=n;/*m初始化為n*/do{b=m%10;m=m/10;sum=sum+b*b*b;}while(m!=0);if(sum==n)printf(“Yes!\n”);elseprintf(“No!\n”);return0;}

3.8舉例(3)2.求1~10000之間所有的“水仙花”數?!痉治觥績芍匮h:外循環n(n=1~10000):已知循環次數-for循環條件:n<=10000循環體:判斷n是否水仙花數,并打印內循環:判斷n是否水仙花數3.8舉例(4)#include<stdio.h>int

main(void){

intn,m,b,sum;for(n=1;n<=10000;n++){sum=0;m=n;/*m初始化為n*/do{b=m%10;m=m/10;sum=sum+b*b*b;}while(m!=0);if(sum==n)printf(“%d\n”,n);}return0;}

3.8舉例(5)3.求兩個整數m和n的最小公倍數?!痉治觥克悸罚合攘钭钚」稊祃cm=m,然后判斷lcm是否能被n整除,若是,則lcm即最小公倍數;否則,lcm=lcm+m,直到lcm能夠被n整除。顯然用循環:循環體:lcm=lcm+m;循環條件:lcm%n!=0循環選擇:while3.8舉例(6)#include<stdio.h>int

main(void){

intn,m,lcm;

scanf(“%d%d”,&m,&n);lcm=m;while(lcm%n!=0)lcm=lcm+m;

printf(“%d\n”,lcm);return0;}

3.8舉例(7)4.猜價格游戲:在給定時間內猜出一件商品的價格(假設價格<=1000元,且是整數)。條件:當報出一個價格時,系統提示:高了、低了或正確。請編程實現?!痉治觥孔詈唵蔚姆椒ǎ簭?開始,每次加1往上報——太慢!二分法:先把【1,1000】作為一個區間,報中間數,根據系統提示選擇價格在哪個半區,然后重新設定新的區間—每次減少一半可能3.8舉例(8)【分析-續】二分法原理:設一個區間的左右邊界分別為low和high,假設價格為x,取區間中間值:mid=(low+high)/2;若x<mid,可知:x在左半區,則調整新區間邊界:low不變,high=mid-1,在新區間繼續找;若x>mid,可知:x在右半區,則調整新區間邊界:low=mid+1,high不變在新區間繼續找;若x==mid,則找到。循環體:mid取值,判斷mid的高低循環條件:區間存在(low<=high),且還沒找到?。⊙h選擇:while語句3.8舉例(9)#include<stdio.h>int

main(void){

int

low,high,mid,x;

scanf(“%d”,&x);low=1;high=1000;while(low<=high){mid=(low+high)/2;if(x<mid)high=mid-1;/*x在左半區*/elseif(x>mid)low=mid+1;/*x在右半區*/elsebreak;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論