C語言循環(huán)結構程序設計_第1頁
C語言循環(huán)結構程序設計_第2頁
C語言循環(huán)結構程序設計_第3頁
C語言循環(huán)結構程序設計_第4頁
C語言循環(huán)結構程序設計_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

循環(huán)結構程序設計2內容提要概述構成循環(huán)的語句

if-goto,while,do-while,for幾種循環(huán)的比較循環(huán)的嵌套Break語句和continue語句36.1概述循環(huán)就是在滿足一定條件時重復執(zhí)行一段程序循環(huán)結構兩種形式:當型循環(huán):當條件成立時一直執(zhí)行某段程序直到型循環(huán):重復執(zhí)行某段程序,直到某個條件為假時實現(xiàn)循環(huán)的語句(4種)用goto語句和if語句構成循環(huán)用while語句——當型循環(huán),先判斷后執(zhí)行用do-while語句——直到型循環(huán),先執(zhí)行后判斷用for語句——多功能46.2goto語句和goto語句構成的循環(huán)goto語句:一般形式:goto語句標號語句標號:用于定義程序中的某個位置用標識符表示,不能只用數(shù)字如gotostart(對),goto4(錯)goto語句的功能:無條件地轉到標號所指的語句goto語句濫用會破壞結構化,所以應少用5用if-goto語句構成循環(huán)例6-1計算#include<stdio.h>voidmain(){intk=1;s=0;loop:if(k<=3){s=s+k;k++;gotoloop;}printf(“s=%d”,s)}66.3while循環(huán)While語句的一般形式執(zhí)行過程while(條件表達式)

語句S;執(zhí)行語句S表達式?計算表達式初值退出循環(huán)為真為假7如:k=1;while(k<=100){s=s+k;k++}注意:若循環(huán)體中有多條語句,一定要以復合語句的形式出現(xiàn)循環(huán)前,要給循環(huán)控制變量賦初值在循環(huán)體內必須有改變循環(huán)控制變量值的語句循環(huán)體可以為空如while((c=getchar())!=‘A’);循環(huán)控制變量循環(huán)體c=getchar();while(c!=‘A’)c=getchar();循環(huán)控制表達式8例6-1計算分析:這是一個求累加和的問題

s=1+2+3s=0s=s+1s=s+2s=s+3s=0s=s+k當前和求和項新和值#include<stdio.h>voidmain(){intk=1;s=0;while(k<=3){s=s+k;k++;}printf(“s=%d”,s)}s和k的初值以及設置初值的位置96-2讀程序#include<stdio.h>voidmain(){intk,s,n;printf(“entern:”);scanf(“%d”,&n);s=0;k=1;while(k<=n){s+=k;k++;}printf(“sum=%d,n=%d”,s,n);}#include<stdio.h>voidmain(){intk,t,n;printf(“entern:”);scanf(“%d”,&n);t=1;k=1;while(k<=n){s*=k;k++;}printf(“t=%d,n=%d”,t,n);}106-4求100以內的奇數(shù)、偶數(shù)之和#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;while(n<100){odd+=n;even+=(n+1);n+=2;}printf(“奇數(shù)和=%d,偶數(shù)和=%d”,odd,even);}分析:偶數(shù)和放在even變量中even=2+4+…+100奇數(shù)和放在odd變量odd=1+3+…+99設置計數(shù)器為1While(n<100){odd+=n;even+=(n+1);n+=2;}while(n<=100){if(n%2==0)even+=n;elseodd+=n;n++;}116-5輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)分析:用碾轉相除法求最大公約數(shù)對m和n做取余運算,余數(shù)記為a當a不等于0時,將m←n,n←a,再作取余運算,否則n為最大公約數(shù)最小公倍數(shù)為兩數(shù)之積/最大公約數(shù)12136.4do-while循環(huán)do-while循環(huán)用來實現(xiàn)直到型循環(huán)一般形式執(zhí)行過程N-S圖do語句while(條件表達式);

執(zhí)行循環(huán)體語句表達式?退出循環(huán)體為真為假14例6-1計算#include<stdio.h>voidmain(){intk=1;s=0;

while(k<=3){s=s+k;k++;}printf(“s=%d”,s)}#include<stdio.h>voidmain(){intk=1;s=0;do{s=s+k;k++;}while(k<=3);printf(“s=%d”,s)}156.5for循環(huán)for循環(huán)的一般形式:for(表達式1;表達式2;表達式3)語句表達式2?執(zhí)行語句真假執(zhí)行for循環(huán)之后的語句執(zhí)行表達式3執(zhí)行表達式1表達式1在進入循環(huán)之前求解,相當于循環(huán)控制變量賦初值表達式3相當于循環(huán)體的一部分16For循環(huán)的其他形式

表達式1;for(;表達式2;表達式3)語句表達式1;for(;表達式2;){語句表達式3}17說明“表達式1”省略時,應在for語句之前給循環(huán)變量賦初值表達式2省略時,不判斷循環(huán)條件,將成為死循環(huán),需要在循環(huán)體中引入break語句以退出循環(huán)表達式3也可以省略,循環(huán)體內應有使循環(huán)條件改變的語句for(i=1;i<=100;){sum=sum+i;i++;}18同時省略表達式1和表達式3,只有表達式2,此時相當于while語句。如:表達式2一般是關系表達式(如i<=100)或邏輯表達式

(如a<b&&x<y),但也可以是數(shù)值表達式或字符表達式,只要其值為非零,就執(zhí)行循環(huán)體i=1;for(;i<=100;){sum=sum+i;i++;}i=1;while(i<=100){sum=sum+i;i++;}for(i=1;i-4;i++)s=s+i19例6-8讀程序,判斷程序的功能#include<stdio.h>voidmain(){charc;for(;(c=getchar())!=‘\n’;)putchar(c);putchar(‘\n’);}getchar()僅當遇到回車符時才開始執(zhí)行,從鍵盤緩沖區(qū)中取字符for(;(c=getchar())!=‘\n’;)if((c>=‘a(chǎn)’)&&(c<=‘z’)||(c>=‘A’)&&(c<=‘Z’))putchar(c);206-4求100以內的奇數(shù)、偶數(shù)之和#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;

while(n<100){odd+=n;even+=(n+1);n+=2;}printf(“奇數(shù)和=%d,偶數(shù)和=%d”,odd,even);}#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;

for(;n<100;n+=2){odd+=n;even+=(n+1);}printf(“奇數(shù)和=%d,偶數(shù)和=%d”,odd,even);}216.6循環(huán)的嵌套一個循環(huán)體內又包含另一個完整的循環(huán)結構稱為循環(huán)的嵌套內嵌的循環(huán)中還可以嵌套循環(huán),構成多層循環(huán)三種循環(huán)語句可以相互嵌套(1)while()(2)do(3)for(;;{…{…{

while()

dofor(;;){…}{…}{…}

}while();}}while();22(4)

while()(5)for(;;)(6)do{…{…{…do{…}while()for(;;){}while(){}…{…}…}}}while()

23循環(huán)嵌套的說明嵌套的循環(huán)控制變量不能相同內循環(huán)變化快,外循環(huán)變化慢

正確確定循環(huán)體循環(huán)控制變量常與求解的問題掛鉤for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf(“%1d*%ld=%2d”,i,j,i*j);printf(“\n”);}24例6-10:試找出滿足下列條件的所有三位數(shù)其百位數(shù)不大于2將個位數(shù)與百位兌換,得到的三位數(shù)是原三位數(shù)的兩倍至三倍之間分析:用三重循環(huán)的控制變量分別表示百、十、個位數(shù)百位數(shù)i取值為1~2十位數(shù)j取值為0~9個位數(shù)k取值為2~9n=100*i+10*j+km=100*k+10*j+im>=2m且m<3m25例6-10:試找出滿足下列條件的所有三位數(shù)其百位數(shù)不大于2將個位數(shù)與百位兌換,得到的三位數(shù)是原三位數(shù)的兩倍至三倍之間分析:用一重循環(huán)的控制變量i表示原來的三位數(shù),i=101~299百位數(shù)n1=i/100十位數(shù)n2=(i-n1*100)/10個位數(shù)n3=i-n1*100-n2*10m=100*n3+10*n2+n1m>=2i且m<3i266.7幾種循環(huán)的比較不提倡用goto語句構成循環(huán)關于循環(huán)的控制while(表達式)

語句for(表達式1;表達式2;表達式3)語句do語句while(表達式);

循環(huán)控制條件循環(huán)條件初始化…………修改循環(huán)條件27循環(huán)體的執(zhí)行都可以用break和continue語句提前終止循環(huán)while(表達式)

語句for(表達式1;表達式2;表達式3)語句do語句while(表達式);

先判斷條件,循環(huán)體可能一次也不執(zhí)行后判斷條件,循環(huán)體至少執(zhí)行一次功能最強,形式最靈活286.8continue和break語句Break語句可以結束switch結構和三種循環(huán)例子6-12:判斷m是否為素數(shù)分析:素數(shù)就是除了1和它本身之外,不能被其他整數(shù)整除的數(shù)即如果m是素數(shù),則必然不存在大于1的整數(shù)i,t,使得m=i*ti的取值范圍為2~sqrt(m)293031continue語句結束本次循環(huán),即忽略循環(huán)體中剩余的語句例6-13把100-200之間不能被3整除的數(shù)輸出if(n%3)printf(“%d”,n);326.9程序舉例例6-14用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一項的絕對值小于10-4為止。

溫馨提示

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

評論

0/150

提交評論