




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章循環結構(一)回顧多重if結構就是在主if塊的else部分中還包含其他if塊嵌套if結構是在主if塊中還包含另一個if語句C語言規定,嵌套if結構中每個else部分總是屬于前面最近的那個缺少對應的else部分的if語句switch結構也可以用于多分支選擇。用于分支條件是整型表達式,而且判斷該整型表達式的值是否等于某些值(可以羅列的),然后根據不同的情況,執行不同的操作條件運算符是if–else語句的另一種表現形式目標理解為什么使用循環結構理解循環的兩大規則熟練掌握while循環的使用熟練掌握do-while循環的使用理解while和do-while循環的區別循環的必要性Intresult1,result2,result3;intresult4,result5;result1=1*10;printf("1×10=%d\n",result1);result2=2*10;printf("2×10=%d\n",result2);result3=3*10;printf("3×10=%d\n",result3);result4=4*10;printf("4×10=%d\n",result4);result5=5*10;printf("5×10=%d\n",result5);
1×10=102×10=203×10=304×10=405×10=50輸出結果重復語句C語言中的各種循環whiledo-whilefor需要多次重復執行一個或多個任務的問題考慮使用循環來解決5.1while語句構成循環while(表達式){
語句;}while循環的一般語法:while(index<100){......
index++;}計算表達式的值,當值為真(非0)時,執行循環體語句,一旦條件為假,就停止執行循環體。如果條件在開始時就為假,那么不執行循環體語句直接退出循環。
工作原理示例規則1:[<初始化>]while(循環條件){<循環體>}循環條件中使用的變量需要經過初始化規則2:while(index<100){......
index++;}while循環主體中的語句必須修改循環條件的值,否則會形成死循環while(1)真1×10=102×10=203×10=304×10=405×10=500+11+12+1上個數字
+1...重復
(上個數字
+1)×10while循環示例1(找出循環規律)#include<stdio.h>voidmain(){intnum=1,result;while(num<=10){result=num*10;printf("%d×10=
%d\n",num,result);num++;}}內存numresult1null102輸出:1×10=102×10=203×10=304×10=405×10=506×10=607×10=708×10=809×10=9010×10=10011100循環實現的算法1.累積和算法p51
循環變量i控制數的規律性變化i++
累積和變量sum存儲和sum=sum+i*i2.迭代算法
x1x2=cos(x1)0cos(0)cos(0)cos(cos(0))cos(cos(0))x1=x2cos(cos(0))x1=x2習題5.35.125.135.16嵌套while循環
嵌套while循環的語法while(i<=10){...while(i<=j){......}...}外循環內循環只有在內循環完全結束后,外循環才會進行下一趟。問題描述:用“*”打印一個直角三角形圖案。圖案如下所示:*******************************************************嵌套while循環示例voidmain(){intnstars=1,stars;
while(nstars<=10){ stars=1;
while(stars<=nstars) { printf("*"); stars++; } printf("\n"); nstars++;}}內層循環控制每行打印*號的個數外層循環控制打印的行數輸出:*******************************************************5.2do-while循環do{
語句;}while(表達式);while循環的一般語法:do{......
scanf(“%d”,&answer);}while(answer!=-1);它先執行循環體中的語句,然后再判斷條件是否為真,如果為真則繼續循環;如果為假,則終止循環。
工作原理示例問題描述:猜數游戲。要求猜一個介于1~10之間的數字,根據用戶猜測的數與標準值進行對比,并給出提示,以便下次猜測能接近標準值,直到猜中為止。do-while循環示例intnumber=5,guess;printf("猜一個介于1與10之間的數\n");do{printf("請輸入您猜測的數:");scanf("%d",&guess);if(guess>number)printf("太大\n");elseif(guess<number)printf("太小\n");}while(guess!=number);printf("您猜中了!答案為%d\n",number);猜一個介于1與10之間的數請輸入您猜測的數:3太小請輸入您猜測的數:5您猜中了!答案為
5輸入數字
5后,do…while循環中的條件為假,
輸出結果消息后,程序終止。Dowhile實現Fibonacci數列(迭代的過程) f1f2f=f1+f2010+1=1
111+1=2121+2=3f1=f2f2=ff1=f2f2=f嵌套do-while循環
嵌套
do-while循環的語法do{...do{...}while(...)...}while(...)外循環內循環只有在內循環完全結束后,外循環才會進行下一趟。嵌套do-while循環示例intvalue,r_digit;value=0;do{printf("\n請輸入一個數:");scanf("%d",&value);if(value<=0)printf("該數必須為正數\n");}while(value<=0);printf("\n反轉后的數為:");do{r_digit=value%10;printf("%d",r_digit);value=value/10;}while(value!=0);printf("\n");通過示例比較intvalue,r_digit;value=0;do{printf("\n請輸入一個數:");scanf("%d",&value);if(value<=0)printf("該數必須為正數\n");}while(value<=0);printf("\n反轉后的數為:");do{r_digit=value%10;printf("%d",r_digit);value=value/10;}while(value!=0);printf("\n");intvalue,r_digit;value=0;while(value<=0)
{printf("\n請輸入一個數:");scanf("%d",&value);if(value<=0)printf("該數必須為正數\n");}printf("\n反轉后的數為:");while(value!=0){r_digit=value%10;printf("%d",r_digit);value=value/10;}printf("\n");
該程序用
do-while
循環將數字左右反轉同樣的程序用
while循環將數字左右反轉比較while和do-while循環while(循環條件){循環體;}do{
循環體;}while(循環條件);do-while循環是先執行后判斷,所以,即使開始條件為假,循環體也至少會被執行一次。while循環是先判斷后執行,所以,如果條件為假,則循環體一次也不會被執行。
比較
while和do-while循環的工作原理總結循環結構的特點是,在給定條件成立時,重復執行某程序段,直到條件不成立為止while循環用于在給定條件為真的情況下重復執行一組操作,while循環先判斷后執行do-while循環先執行后判斷,因此循環將至少執行一次在循環中,需要修改循環變量的值以改變循環條件,否則有可能形成死循環循環嵌套必須將內層循環完整的包含在外層循環中第五章循環結構(二)回顧循環結構的特點是,在給定條件成立時,重復執行某程序段,直到條件不成立為止while循環用于在給定條件為真的情況下重復執行一組操作,while循環先判斷后執行do-while循環先執行后判斷,因此循環將至少執行一次在循環中,需要修改循環變量的值以改變循環條件,否則有可能形成死循環循環嵌套必須將內層循環完整的包含在外層循環中目標熟練使用for循環理解break和continue語句的用法熟練使用嵌套循環for(表達式1;表達式2;表達式3){
語句;}
for循環的一般語法:5.3for循環counter=0;inum=1;cnt=100;counter==10;inum<25;cnt>0counter++;inum=inum+1;cnt--分號用于分隔for
循環的三個表達式1、計算表達式1的值,通常為循環變量賦初值;2、計算表達式2的值,即判斷循環條件是否為真,若值為真則執行循環體一次,否則跳出循環;3、計算表達式3的值,這里通常寫更新循環變量的賦值表達式,然后轉回第2步重復執行;工作原理1234for循環示例1#include<stdio.h>voidmain(){intnumber,count,factorial=1;printf("\n請輸入任意一個正整數:");scanf("%d",&number);for(count=1;count<=number;count++) factorial=factorial*count;printf("\n%d的階乘
=%d\n",number,factorial);}請輸入任意一個正整數:5內存numbercountfactorial51121206循環執行五次5的階乘=120逗號運算符for(i=0,j=max;i<=max;i++,j--)printf(“\n%d+%d=%d”,i,j,i+j);for語句中的三個表達式都可以是逗號表達式逗號表達式就是通過“,”運算符隔開的多個表達式組成的表達式逗號表達式從左往右計算。逗號運算符在C語言運算符中的優先級最低for循環示例2#include<stdio.h>voidmain(){ inti,j,max; printf("請輸入一個值\n"); printf("根據這個值可以輸出以下加法表:"); scanf("%d",&max);
for(i=0,j=max;i<=max;i++,j--)
printf("\n%d+%d=%d",i,j,i+j); printf("\n");}循環執行max次初始化語句只執行一次請輸入一個值根據這個值可以輸出以下加法表:50+5=51+4=52+3=53+2=54+1=5for循環的表達式for循環中有三個表達式for語句中的各個表達式都可以省略分號分隔符不能省略for(<初始化循環變量>;<循環條件>;<修改循環變量的值>){<循環體語句>;}可省略不能省略省略表達式1intnum=0;for(;num<=10;num++){ printf("%d\n",num*2);}
inta=0,n;printf("\n輸入n的值:");scanf("%d",&n);for(;n>0;a++,n--)printf("%d",a*2);
相當于省去了為循環變量賦初值,此時應在for語句之前給循環變量賦初值省略表達式2for(num=1;;num++){...}
即不判斷循環條件,也就是認為表達式2始終為真,這時應在循環體內設法結束循環,否則將成為死循環省略表達式3for(i=1;i<=100;)
{sum=sum+1;i++;}
即省去修改循環變量的值,但此時應在循環體內設法更改循環變量的值省略三個表達式for(;;){printf("這將一直進行下去");i=getchar();if(i=='X'||i=='x') break;}
即不為循環變量賦初值,不設置循環條件(認為表達式2為真值),不修改循環變量的值,無終止地執行循環體。此時應在循環體內設法結束循環,否則會成為死循環5.4for循環的嵌套For循環嵌套實現算法:1倒置圖形外層循環控制行i,內層循環控制每層的空格k和字符j。2素數的求解外層控制需要判斷的數i,內層對每個數進行具體的判斷(從2到sprt(i))。5.5break和continuebreak語句強行跳出循環體,循環體中break后面的語句不再執行。在多層循環中,一個break語句只向外跳一層。break語句2-2跳出
for循環for(;;){printf("這將一直進行下去");i=getchar();if(i=='X'||i=='x')
break;}
跳出
while循環X=11while(1){if(x--==10)
break;}
跳出
do-while循環X=11do{if(x--==10)
break;}while(10);問題描述:統計從鍵盤輸入的若干個字符中有效字符的個數,以換行符作為輸入結束。有效字符是指第一個空格符前面的字符,若輸入字符中沒有空格符,則有效字符為除了換行符之外的所有字符。#include<stdio.h>voidmain(){ intcount=0,ch; printf("\n請輸入一行字符:"); while((ch=getchar())!='\n') { if(ch=='')
break; count++; } printf("\n共有
%d個有效字符。\n",count);}break語句示例內存chcountH0_
請輸入一行字符:Helloworld
共有5個有效字符1循環執行5次5continue語句continue語句的作用是跳過循環體中剩余的語句而執行下一次循環對于while和do-while循環,continue語句執行之后的動作是條件判斷;對于for循環,隨后的動作是變量更新.continue語句2-2while(…){
…………continue;
…………}while(…){
…………
break;
…………}跳出整個循環繼續下一次循環問題描述:求整數1~100的累加值,但要求跳過所有個位為3的數。#include<stdio.h>voidmain(){ inti,sum=0; for(i=1;i<=100;i++) { if(i%10==3)
continue; sum+=i; } printf("sum=%d\n",sum);}continue語句示例內存isumnull0131循環執行到i=1378輸出:sum=45701循環執行到i=1011014570問題描述:用“*”輸出一個菱形圖案,圖案如下:
*************************嵌套循環示例1voidmain(){ inti,j,k;
for(i=1;i<=4;i++) {
for(j=1;j<=4-i;j++) printf("");
for(k=1;k<=2*i-1;k++)
printf("*"); printf("\n"); }
for(i=1;i<=3;i++){
for(j=1;j<=i;j++) printf("");
for(k=1;k<=7-2*i;k++) printf("*"); printf("\n");}}
輸出:*************************控制打印的行數控制每行打印的空格數控制每行打印的*號數控制打印的行數控制每行打印的空格數控制每行打印的*號數問題描述:打印輸出100至200之間的全部素數。分析:素數是指只能被1和它本身整除的數。算法比較簡單,先將這個數被2除,如果能整除,且該數又不等于2,則該數不是素數。如果該數不能被2整除,再看則是否能被3整除。如果被3整除,并且該數不等于3,則該數不是素數,否則再判斷是否被4整除,依此類推,該數只要是能被小于本身的某個數整除時,就不是素數。
嵌套循環示例2voidmain(){inti,j,n;n=0;
for(i=100;i<=200;i++){j=2;
while(i%j!=0)
j++;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 以公司角度寫團建活動方案
- 仰天山研學活動方案
- 任性貸以舊換新活動方案
- 企業產品活動方案
- 企業全員活動方案
- 企業寫作培訓活動方案
- 企業單位公司年會活動方案
- 企業咖啡品鑒活動方案
- 企業垂釣活動方案
- 企業開展捐書活動方案
- 《軟件安全測試》課件
- 華為管培生培訓
- 2023年高考英語試卷(新課標Ⅰ卷)含答案解析
- 慢性便秘腸道微生態臨床應用中國專家共識2024版解讀
- 《航空材料無損檢測》課件-航空金屬材料-鈦及鈦合金
- 跟著音樂游中國(廣州大學)知到智慧樹章節答案
- 缺血性腸病病例
- 電大《納稅籌劃》考試題庫小抄
- 2024年新人教版五年級數學下冊《第4單元分數的意義和性質 整 理和復習》教學課件
- 如何正確呼叫120
- 古詩詞誦讀《客至》課件+2023-2024學年統編版高中語文選擇性必修下冊
評論
0/150
提交評論