九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

C語(yǔ)言程序設(shè)計(jì)第3章C語(yǔ)言控制語(yǔ)句.ppt

  • 資源ID:11495418       資源大?。?span id="24d9guoke414" class="font-tahoma">2.77MB        全文頁(yè)數(shù):112頁(yè)
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

C語(yǔ)言程序設(shè)計(jì)第3章C語(yǔ)言控制語(yǔ)句.ppt

第3章C語(yǔ)言控制語(yǔ)句,C語(yǔ)言程序設(shè)計(jì),2020/4/25,本章介紹數(shù)據(jù)輸出數(shù)據(jù)輸入順序結(jié)構(gòu)程序設(shè)計(jì)分支結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì),2020/4/25,程序的三種基本結(jié)構(gòu),順序結(jié)構(gòu),N-S結(jié)構(gòu)圖,流程圖,選擇結(jié)構(gòu),2020/4/25,程序的三種基本結(jié)構(gòu),循環(huán)結(jié)構(gòu),直到型循環(huán),當(dāng)型循環(huán),N-S結(jié)構(gòu)圖,流程圖,2020/4/25,3.1結(jié)構(gòu)化程序設(shè)計(jì),3種基本結(jié)構(gòu)特點(diǎn):只有一個(gè)入口和一個(gè)出口結(jié)構(gòu)內(nèi)的每一個(gè)框都有機(jī)會(huì)被執(zhí)行結(jié)構(gòu)內(nèi)沒(méi)有死循環(huán)僅包含3種基本結(jié)構(gòu)的程序稱為結(jié)構(gòu)化程序,2020/4/25,3.2順序結(jié)構(gòu)程序設(shè)計(jì),主要內(nèi)容:字符輸出函數(shù)格式輸出函數(shù)字符輸入函數(shù)格式輸入函數(shù)順序結(jié)構(gòu)程序設(shè)計(jì)舉例,2020/4/25,3.2.1字符輸出函數(shù),函數(shù)調(diào)用的一般形式putchar(ch)功能:在標(biāo)準(zhǔn)輸出設(shè)備(即顯示器屏幕)上輸出一個(gè)字符。,例如:putchar(b);putchar(n);putchar(101);putchar(st);,輸出:b輸出:回車換行輸出:A,2020/4/25,說(shuō)明,putchar是C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù),使用時(shí)必須加編譯預(yù)處理命令:#include"stdio.h"或#include【例3.1】利用putchar函數(shù)輸出字符。,#include"stdio.h"main()charc1,c2;c1=a;c2=b;putchar(c1);putchar(c2);putchar(n);putchar(c1-32);putchar(c2-32);putchar(n);,輸出結(jié)果:abAB,2020/4/25,3.2.2格式輸出函數(shù),函數(shù)調(diào)用的一般形式printf("格式控制字符串",輸出表列)功能:按格式控制所指定的格式,在標(biāo)準(zhǔn)輸出設(shè)備上輸出輸出表列各項(xiàng)的值。,例如有程序段:inta=123,b=100;printf("%d%d%dn",a,b,a+b);printf("c=%d+%d=%dn",a,b,a+b);,2020/4/25,2020/4/25,格式控制字符串,用雙引號(hào)括起的字符串,用于指定輸出數(shù)據(jù)的類型、格式、個(gè)數(shù)包括:非格式字符和格式字符,照原樣輸出,printf("c=%d+%d=%dn",a,b,a+b);,格式字符:指定輸出3個(gè)十進(jìn)制整型數(shù),分別為變量a、b、ab的值,2020/4/25,輸出格式說(shuō)明符,在和格式符之間可以使用附加說(shuō)明符,2020/4/25,附加格式說(shuō)明符,例如:%ld輸出十進(jìn)制長(zhǎng)整型數(shù)%m.nf右對(duì)齊,m位域?qū)?,n位小數(shù)或n個(gè)字符%-m.nf左對(duì)齊,2020/4/25,例3.2整型數(shù)據(jù)的輸出,main()inta=11,b=22;intm=-1;longn=123456789;printf("%d%dn",a,b);printf("a=%d,b=%dn",a,b);printf("m:%d,%o,%x,%un",m,m,m,m);printf("n=%dn",n);printf("n=%ldn",n);,程序輸出:1122a=11,b=22m:-1,37777777777,ffffffff,4294967295n=123456789n=123456789,VC+環(huán)境下運(yùn)行結(jié)果,2020/4/25,例3.3實(shí)型數(shù)據(jù)的輸出,main()floatx=1234.56,y=1.23456789;doublez=1234567.123456789;printf("x=%f,y=%fn",x,y);printf("z=%fn",z);printf("z=%en",z);printf("z=%18.8fn",z);printf("x=%10.3fn",x);printf("x=%-10.3fn",x);printf("x=%4.3fnn",x);,程序輸出:x=1234.560059,y=1.234568z=1234567.123457z=1.23457e+06z=1234567.12345679x=1234.560 x=1234.560 x=1234.560,2020/4/25,例3.4字符型數(shù)據(jù)的輸出,main()intm=97;charch=B;printf("m:%d%cn",m,m);printf("ch:%d%cn",ch,ch);printf("%sn","student");printf("%10sn","student");printf("%-10sn","student");printf("%10.3sn","student");printf("%.3snn","student");,程序輸出:m:97ach:66Bstudentstudentstudentstustu,2020/4/25,注意:,printf函數(shù)格式控制中的格式字符與輸出表列參數(shù)的個(gè)數(shù)和類型必須一一對(duì)應(yīng)。格式說(shuō)明符的%和后面的描述符之間不能有空格。長(zhǎng)整型數(shù)應(yīng)該用ld(或lo、lx、lu)格式輸出,否則會(huì)出現(xiàn)輸出錯(cuò)誤。printf函數(shù)的參數(shù)可以是常量、變量或表達(dá)式。,2020/4/25,3.2.3字符輸入函數(shù),函數(shù)調(diào)用的一般形式getchar()功能:從標(biāo)準(zhǔn)輸入設(shè)備(即鍵盤)上輸入一個(gè)字符。,例如:getchar();c=getchar();printf("%cn",getchar();,2020/4/25,例如:,【例3.5】getchar函數(shù)的應(yīng)用。,#include"stdio.h"main()charch;ch=getchar();printf("%c%dn",ch,ch);printf("%c%dn",ch-32,ch-32);,程序運(yùn)行時(shí)輸入:m并按回車鍵后輸出結(jié)果是:m109M77,2020/4/25,說(shuō)明:,getchar是C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù),使用時(shí)必須加編譯預(yù)處理命令:#include"stdio.h"或#includegetchar函數(shù)需要交互輸入,接收到輸入字符之后才繼續(xù)執(zhí)行程序。連續(xù)使用getchar函數(shù)時(shí),要注意字符的輸入形式,例如執(zhí)行如下程序段:,charch1,ch2;ch1=getchar();ch2=getchar();,必須連續(xù)輸入兩個(gè)字符,中間不能有其他字符,2020/4/25,3.2.4格式輸入函數(shù),函數(shù)調(diào)用的一般形式scanf("格式控制字符串",地址表列);功能:按格式控制指定的格式,從標(biāo)準(zhǔn)輸入設(shè)備(即鍵盤)交互輸入數(shù)據(jù),并依次存放到對(duì)應(yīng)地址表列參數(shù)指定的變量中(即將輸入值賦給變量)。例如:scanf("%d%f",2020/4/25,格式控制字符串,用雙引號(hào)括起的字符串,用于指定輸入數(shù)據(jù)的類型、格式、個(gè)數(shù)以及輸入的形式包括:非格式字符和格式字符,照原樣輸入,scanf("a=%d,b=%d",格式字符:指定輸入2個(gè)十進(jìn)制整型數(shù)賦給變量a和b,2020/4/25,輸入格式說(shuō)明符,在和格式符之間可以使用附加說(shuō)明符,2020/4/25,附加格式說(shuō)明符,例如:%ld、%lo輸入十進(jìn)制、八進(jìn)制長(zhǎng)整型數(shù)%lf、%le輸入雙精度實(shí)型數(shù)%mf輸入m位數(shù)(域?qū)挘?*d忽略輸入的一個(gè)整型數(shù),此變量接收下一個(gè)數(shù)據(jù),對(duì)float和double型指整數(shù)位數(shù)+小數(shù)點(diǎn)+小數(shù)位數(shù),2020/4/25,例如:,scanf("%d%d%d",輸入的形式是:a=32,b=28(普通字符要照原樣輸入),2020/4/25,程序舉例,例1:格式控制串中分隔符的應(yīng)用。main()inta,b,c,d;scanf("%d%d",運(yùn)行時(shí)輸入:123,4輸出:,可以這樣輸入嗎?123,4輸出:1,2,3,4,1,2,3,4,2020/4/25,例2:c格式符的使用。,main()charc1,c2,c3;scanf("%c%c",運(yùn)行時(shí)輸入:ABC輸出:?,思考:若輸入:AB(回車)C輸出:?,2020/4/25,例3:f格式符的使用。,main()floatx,y;doublez;scanf("%f",運(yùn)行時(shí)輸入:531.56212.345678.315輸出:,注意:float型7位有效,double型1516位有效。,x=531.562012,y=12.345000,z=678.31000000,2020/4/25,例4s格式符的使用。,main()chara10,b10;scanf("%s%s",a,b);printf("%sn%sn",a,b);,運(yùn)行時(shí)輸入:Howdoyoudo!輸出:Howdo,2020/4/25,例5抑制符的使用。,main()inta,b;scanf(“%2d%*3d%2d”,輸入:1234567輸出:?,a=12b=67,2020/4/25,使用scanf函數(shù)應(yīng)注意:,要求在程序運(yùn)行中輸入數(shù)據(jù),輸入的數(shù)據(jù)個(gè)數(shù)和類型必須與格式說(shuō)明符一一對(duì)應(yīng)。地址參數(shù)形式:b=a;,?,正確的交換方法:,123,78,123,c=a;,a=b;,b=c;,2020/4/25,程序:,main()inta,b,c;printf("ninputa,b:");scanf("%d,%d",程序運(yùn)行情況如下:inputa,b:32,57beforeexchange:a=32b=57afterexchange:a=57b=32,2020/4/25,舉例(補(bǔ)充),【例3.6】已知三條邊a、b、c,求三角形面積。計(jì)算三角形面積的海倫公式:,其中:,設(shè)定義:整型變量a、b、c實(shí)型變量s、area,2020/4/25,程序如下:,#include"math.h"main()inta,b,c;floats,area;scanf("%d,%d,%d",程序運(yùn)行情況如下:3,4,5area=6.000,實(shí)際上還需要判斷a、b、c是否能構(gòu)成三角形,即應(yīng)該進(jìn)行選擇判斷處理,2020/4/25,舉例(補(bǔ)充),【例3.7】從鍵盤輸入兩個(gè)整數(shù),輸出它們相除的余數(shù)及商(要求保留2位小數(shù))。,例如輸入的m和n分別為100和18,輸出形式為:mn10m/n=5.56,main()intm,n;printf("ninputm,n:");scanf("%d,%d",2020/4/25,舉例:,【例3-12】輸入時(shí)間(時(shí)、分、秒),然后打印輸出共計(jì)多少秒?,分析:,2020/4/25,程序如下:,#includevoidmain()shorthour,min,sec;longtotal;printf("%nEnterhour:min:sec:");scanf("%d:%d:%d",程序運(yùn)行情況如下:Enterhour:min:sec:3:10:50Thetotalsecond=11450,思考:total的數(shù)據(jù)類型如何處理?,2020/4/25,40,提出問(wèn)題:,自然語(yǔ)言:如果則否則C語(yǔ)言:分支語(yǔ)句,?,問(wèn)題1:如何根據(jù)收入,確定他的納稅比例及納稅額?,?,問(wèn)題2如何根據(jù)學(xué)生的分?jǐn)?shù)判斷是否及格?,2020/4/25,41,3.3分支結(jié)構(gòu)程序設(shè)計(jì),3.3.1if條件分支語(yǔ)句3.3.2switch多路開關(guān)語(yǔ)句,2020/4/25,42,單分支語(yǔ)句,語(yǔ)句一般格式if(表達(dá)式)語(yǔ)句,功能:計(jì)算表達(dá)式的值,如果是一個(gè)非0值(即邏輯真),就執(zhí)行內(nèi)嵌語(yǔ)句,否則(即邏輯假)跳過(guò)內(nèi)嵌語(yǔ)句,順序執(zhí)行后續(xù)語(yǔ)句。,2020/4/25,43,單分支語(yǔ)句的算法:,例如:if(x>0)m+;if(a>b)c=a;a=b;b=c;,2020/4/25,44,雙分支語(yǔ)句,語(yǔ)句一般格式if(表達(dá)式)語(yǔ)句1else語(yǔ)句2功能:計(jì)算表達(dá)式的值,如果它的值是一個(gè)非0值(邏輯真),就執(zhí)行內(nèi)嵌語(yǔ)句1,之后跳過(guò)內(nèi)嵌語(yǔ)句2,執(zhí)行后續(xù)語(yǔ)句;否則跳過(guò)內(nèi)嵌語(yǔ)句1,執(zhí)行內(nèi)嵌語(yǔ)句2,之后執(zhí)行后續(xù)語(yǔ)句。,2020/4/25,45,雙分支語(yǔ)句的算法:,例如:if(x>0)m+;elsem-;if(ch>=a,2020/4/25,46,多分支語(yǔ)句,語(yǔ)句一般格式if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式n-1)語(yǔ)句n-1else語(yǔ)句n功能:依次計(jì)算并判斷表達(dá)式i,為非0時(shí)執(zhí)行后面的語(yǔ)句,都為0時(shí),執(zhí)行語(yǔ)句n無(wú)論執(zhí)行完哪個(gè)語(yǔ)句分支,都轉(zhuǎn)到后續(xù)語(yǔ)句,2020/4/25,47,多重分支語(yǔ)句的算法,流程圖,表達(dá)式n-1?,2020/4/25,48,多重分支語(yǔ)句的算法,N-S結(jié)構(gòu)圖,例如:if(a=Aprintf("EnterintegerXandY:");scanf("%d%d",應(yīng)該正確判斷:if的內(nèi)嵌語(yǔ)句if和else的配對(duì),if(x!=y)if(x>y)printf("X>Yn");elseprintf("X<Yn");elseprintf("X=Yn");,提倡縮格書寫有利于閱讀程序,2020/4/25,55,雙(或多)分支if語(yǔ)句的嵌套形式if(表達(dá)式)if語(yǔ)句elseif語(yǔ)句,if語(yǔ)句嵌套的形式,單if語(yǔ)句的嵌套形式if(表達(dá)式)if語(yǔ)句,可以是各種形式的if語(yǔ)句,可以是各種形式的if語(yǔ)句,如果是簡(jiǎn)單if語(yǔ)句,必須用“”括起,2020/4/25,56,if(c=50)printf("50150n");if(c=50)printf("50<=c<=100n");elseprintf("c<50n");,例如:,if(c=50)printf("50<=c<=100n");,與哪個(gè)if配對(duì)?,匹配規(guī)則:在嵌套的ifelse語(yǔ)句中,else總是與上面的、離它最近的、在同一復(fù)合語(yǔ)句中還沒(méi)有配對(duì)的if配對(duì)。,elseprintf("cb)if(a>c)if(a>d)flag=1;elseflag=2;elseflag=3;,if(a>b)if(a>c)if(a>d)flag=1;elseflag=2;elseflag=3;,flag=3的條件:,flag=3的條件:,當(dāng)ca>b時(shí),當(dāng)ab時(shí),例如:,2020/4/25,58,舉例,【例3.10】輸入一個(gè)數(shù),判斷它是奇數(shù)還是偶數(shù),如果是奇數(shù)則進(jìn)一步判斷它是否為5的倍數(shù)。,x%2!=0?,x%5等于0?,2020/4/25,59,程序:,main()intx;scanf("%d",等價(jià)于if(x%2).,等價(jià)于if(!(x%5).,2020/4/25,60,學(xué)習(xí)if語(yǔ)句的難點(diǎn),正確用表達(dá)式描述條件例如:當(dāng)x大于5小于10時(shí)令x自增if(5<x<10)x+;,ifelse語(yǔ)句的配對(duì)正確判斷內(nèi)嵌語(yǔ)句例如:if(x<y)x=x+3;y=y-2;elsex=x-3;y=y+2;,2020/4/25,61,選擇結(jié)構(gòu)舉例,【例3.13】輸入年份,判別該年是否為閏年。,思路:年份year為閏年的條件為能夠被4整除,但不能被100整除的年份;能夠被400整除的年份。只要滿足任意一個(gè)就可以確定它是閏年。例如:1996年、2008年是閏年2006年、1900年不是閏年,設(shè)定標(biāo)志變量leap,只要符合其中一個(gè)條件的就是閏年,令leap=1;否則令leap=0,2020/4/25,62,算法:,year%4=0scanf("%d",2020/4/25,64,3.3.2switch多路開關(guān)語(yǔ)句,switch語(yǔ)句的一般形式switch(表達(dá)式)case常量表達(dá)式1:語(yǔ)句序列1case常量表達(dá)式2:語(yǔ)句序列2case常量表達(dá)式n:語(yǔ)句序列ndefault:語(yǔ)句序列n+1功能:計(jì)算表達(dá)式的值,與常量表達(dá)式的值比較,等于第i個(gè)值時(shí),順序執(zhí)行語(yǔ)句序列i、i+1、n+1若與所有常量表達(dá)式值都不相等,執(zhí)行語(yǔ)句序列n+1。,2020/4/25,65,switch語(yǔ)句的算法描述,例如:switch(a)case5:printf(",當(dāng)a等于5,輸出:default:printf("$");case5:printf(",當(dāng)a等于2,輸出:#$break;,當(dāng)a等于2,輸出:#當(dāng)a等于5,輸出:charop;op=getchar();switch(op)case+:z=x+y;break;case-:z=x-y;break;case*:z=x*y;break;case/:z=x/y;break;default:z=0;if(int)z!=0)printf("%f%c%f=%fn",x,op,y,z);elseprintf("%cisnotanoperatorn",op);,實(shí)型數(shù)通常不使用z=0或z!=0的比較可用if(int)z)代替,2020/4/25,69,注意:,switch語(yǔ)句的書寫格式:語(yǔ)句體本身必須用花括號(hào)括起;case和default后面如果有多條語(yǔ)句,則不必加花括號(hào);case和常量表達(dá)式之間必須有空格;default可以寫在語(yǔ)句體的任何位置,也可以省略。break語(yǔ)句可以改變case的語(yǔ)句標(biāo)號(hào)作用,終止后續(xù)case語(yǔ)句序列的執(zhí)行。switch語(yǔ)句和break語(yǔ)句結(jié)合,可以實(shí)現(xiàn)程序的選擇控制。允許switch嵌套使用,但同一個(gè)switch語(yǔ)句中,任意兩個(gè)case的常量表達(dá)式值不能相同。,2020/4/25,70,3.4循環(huán)結(jié)構(gòu)程序設(shè)計(jì),while循環(huán)控制do-while循環(huán)控制for循環(huán)控制循環(huán)的嵌套,2020/4/25,71,3.4.1while循環(huán)控制,語(yǔ)句一般格式while(表達(dá)式)語(yǔ)句,一般為關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是C語(yǔ)言其他類型的合法表達(dá)式用來(lái)控制循環(huán)體是否執(zhí)行,稱為內(nèi)嵌語(yǔ)句,可以是基本語(yǔ)句、控制語(yǔ)句,也可以是復(fù)合語(yǔ)句是循環(huán)重復(fù)執(zhí)行的部分,2020/4/25,72,功能:,計(jì)算表達(dá)式的值,當(dāng)為非0(邏輯真)時(shí),執(zhí)行內(nèi)嵌語(yǔ)句,每執(zhí)行一次,就判斷一次表達(dá)式的值,當(dāng)表達(dá)式的值為0時(shí)結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行while后面的語(yǔ)句。,循環(huán)控制條件,循環(huán)體,2020/4/25,73,例如:,【例3.14】編寫程序,求100個(gè)自然數(shù)的和即:s=1+2+3+100,思路:尋找加數(shù)與求和的規(guī)律,加數(shù)i從1變到100,每循環(huán)一次,使i增1,直到i的值超過(guò)100。i的初值設(shè)為1。求和設(shè)變量sum存放和,循環(huán)求sum=sum+i,直至i超過(guò)100。,2020/4/25,74,算法和程序:,main()inti,sum;i=1;sum=0;while(i<=100)sum=sum+i;i+;printf("sum=%dn",sum);,程序輸出結(jié)果:sum=5050,i:循環(huán)控制變量sum:累加器,2020/4/25,75,注意:,如果(表達(dá)式)值為0,則循環(huán)體一次也不執(zhí)行(例如當(dāng)i的初值為101)。在循環(huán)體中必須有使循環(huán)趨向結(jié)束的操作,否則循環(huán)將無(wú)限進(jìn)行(死循環(huán))。在循環(huán)體中,語(yǔ)句的先后位置必須符合邏輯,否則會(huì)影響運(yùn)算結(jié)果。,思考如下的輸出?while(i<=100)i+;sum=sum+i;printf("sum=%dn",sum);,運(yùn)行后,輸出:sum=5150原因是什么?如何修改程序使結(jié)果正確?,2020/4/25,76,其他的while語(yǔ)句形式,while(0).由于表達(dá)式恒等于0,所以循環(huán)體永遠(yuǎn)也不會(huì)執(zhí)行,是一個(gè)邏輯錯(cuò)誤的語(yǔ)句,while(1).由于表達(dá)式恒等于1,所以不可能通過(guò)循環(huán)控制條件來(lái)結(jié)束循環(huán)體的執(zhí)行,即死循環(huán)。為了保證循環(huán)正常運(yùn)行,應(yīng)該特別注意:循環(huán)控制條件的描述控制條件的初始狀態(tài)(初始值)循環(huán)體內(nèi)部對(duì)控制條件的影響,2020/4/25,77,3.4.2do-while語(yǔ)句,語(yǔ)句一般格式do語(yǔ)句while(表達(dá)式);功能:先執(zhí)行內(nèi)嵌語(yǔ)句(循環(huán)體),之后計(jì)算表達(dá)式的值,不為0(邏輯真)時(shí),再執(zhí)行循環(huán)體并判斷條件,直到表達(dá)式的值為0結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行while下面的語(yǔ)句。,2020/4/25,78,do-while循環(huán)的算法,N-S結(jié)構(gòu)圖,main()inti=1,sum=0;dosum=sum+i;i+;while(i<=100);printf("%dn",sum);,用do-while語(yǔ)句求1+2+100,2020/4/25,79,說(shuō)明:,while和do-while都能實(shí)現(xiàn)循環(huán)控制,while結(jié)構(gòu)程序通常都可以轉(zhuǎn)換成do-while結(jié)構(gòu),區(qū)別:do-while語(yǔ)句先執(zhí)行循環(huán)體再判斷條件,循環(huán)體至少執(zhí)行一次;while語(yǔ)句先判斷條件再執(zhí)行循環(huán)體,循環(huán)體有可能一次也不執(zhí)行dowhile循環(huán)體中一定要有能使表達(dá)式值趨于0的操作(如i+),否則會(huì)出現(xiàn)死循環(huán)。,2020/4/25,80,3.4.3for語(yǔ)句,語(yǔ)句一般格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句,功能:計(jì)算表達(dá)式1的值,再判斷表達(dá)式2,如果其值為非0(邏輯真),則執(zhí)行內(nèi)嵌語(yǔ)句(循環(huán)體),并計(jì)算表達(dá)式3;之后再去判斷表達(dá)式2,一直到其值為0時(shí)結(jié)束循環(huán),執(zhí)行后續(xù)語(yǔ)句。,循環(huán)初始條件,循環(huán)控制條件,循環(huán)體,2020/4/25,81,for語(yǔ)句的算法,例如:main()inti,sum;for(sum=0,i=1;i<=100;i+)sum=sum+i;printf("sum=%dn",sum);,可部分或全部省略,但“;”不可省略,2020/4/25,82,省略for語(yǔ)句的表達(dá)式,表達(dá)式1、2、3全省略,即:for(;)等同于:while(1),會(huì)無(wú)限循環(huán)(死循環(huán)),注意:在省略某個(gè)表達(dá)式時(shí),應(yīng)在適當(dāng)位置進(jìn)行循環(huán)控制的必要操作,以保證循環(huán)的正確執(zhí)行,省略表達(dá)式1和表達(dá)式3,即:for(;表達(dá)式2;)等同于:while(表達(dá)式2)省略表達(dá)式2,即:for(表達(dá)式1;表達(dá)式3)等同于:表達(dá)式1;while(1)表達(dá)式3;,2020/4/25,83,例如:,i=1;for(;i100)for(i=1;i100)i+;,2020/4/25,84,說(shuō)明:,所有用while語(yǔ)句實(shí)現(xiàn)的循環(huán)都可以用for語(yǔ)句實(shí)現(xiàn)。,等價(jià)于:,for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句;,表達(dá)式1;while(表達(dá)式2)語(yǔ)句;表達(dá)式3;,2020/4/25,85,for語(yǔ)句的簡(jiǎn)單應(yīng)用,【例3.16】求n!,即計(jì)算p=123n的值。,思路:求階乘與求累加的運(yùn)算處理過(guò)程類似,只要將“+”變?yōu)椤?”。,設(shè)置:乘數(shù)i,初值為1,終值為n(n是循環(huán)控制終值,需要從鍵盤輸入)累乘器p,每次循環(huán)令p=p*i,2020/4/25,86,程序:,main()inti,n;longp;p=1;printf("Entern:");scanf("%d",思考:如何求s=1!+2!+n!?,2020/4/25,87,3.4.43種循環(huán)語(yǔ)句的比較,while和do-while語(yǔ)句的表達(dá)式只有一個(gè),for語(yǔ)句有三個(gè)。while和for先判斷循環(huán)條件后執(zhí)行循環(huán)體,do-while語(yǔ)句先執(zhí)行循環(huán)體后判斷循環(huán)條件。,while語(yǔ)句多用于循環(huán)次數(shù)不定的情況do-while語(yǔ)句多用于至少要運(yùn)行一次的情況for語(yǔ)句多用于要賦初值或循環(huán)次數(shù)固定的情況,2020/4/25,88,3.4.5循環(huán)的嵌套,如果循環(huán)語(yǔ)句的循環(huán)體內(nèi)又包含了另一條循環(huán)語(yǔ)句,則稱為循環(huán)的嵌套例如:,#includemain()inti,j;for(i=1;i<10;i+)for(j=1;j<=i;j+)printf(j=i)?"%4dn":"%4d",i*j);,外循環(huán)語(yǔ)句,內(nèi)循環(huán)語(yǔ)句,外循環(huán)體,內(nèi)循環(huán)體,2020/4/25,89,例如:,#includemain()inti,j;for(i=1;i<10;i+)for(j=1;j<=i;j+)printf("%4d",i*j);printf("n");,外循環(huán)語(yǔ)句,內(nèi)循環(huán)語(yǔ)句,外循環(huán)體,內(nèi)循環(huán)體,3.4.5循環(huán)的嵌套,2020/4/25,90,運(yùn)行結(jié)果:,12436948121651015202561218243036714212835424981624324048566491827364554637281,2020/4/25,91,注意:,while、do-while、for循環(huán)語(yǔ)句可以并列,也可以相互嵌套,但要層次清楚,不能出現(xiàn)交叉。多重循環(huán)程序執(zhí)行時(shí),外層循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)都需要循環(huán)執(zhí)行多次。例如:,for(a=1;a<=10;a+)for(b=0;b<=5;b+),外循環(huán)執(zhí)行了10次,內(nèi)循環(huán)執(zhí)行6次循環(huán)正常結(jié)束時(shí),內(nèi)循環(huán)執(zhí)行了106=60次,2020/4/25,92,3.5break和continue語(yǔ)句,結(jié)構(gòu)化程序設(shè)計(jì)中有如下2種語(yǔ)句實(shí)現(xiàn)跳轉(zhuǎn):continue語(yǔ)句break語(yǔ)句在循環(huán)語(yǔ)句的循環(huán)體中使用,可以進(jìn)行循環(huán)的流程控制,2020/4/25,93,3.5.1break語(yǔ)句,功能:利用break語(yǔ)句能夠強(qiáng)迫終止本層循環(huán),轉(zhuǎn)到后續(xù)語(yǔ)句執(zhí)行。,2020/4/25,94,3.5.1break的應(yīng)用,break;,while語(yǔ)句,break;,do-while語(yǔ)句,break;,for語(yǔ)句,2020/4/25,95,例如:,intx,n=0,s=0;while(n<10)scanf("%d",intx,n=0,s=0;doscanf("%d",for(n=0,s=0;n<10;n+)scanf("%d",2020/4/25,96,3.5.2continue語(yǔ)句及應(yīng)用,功能:中斷循環(huán)體的本次執(zhí)行(即跳過(guò)循環(huán)體中尚未執(zhí)行的語(yǔ)句),立即開始執(zhí)行下一次循環(huán)。,2020/4/25,97,3.5.2continue語(yǔ)句及應(yīng)用(續(xù)),continue;,while語(yǔ)句,continue;,do-while語(yǔ)句,continue;,for語(yǔ)句,2020/4/25,98,例如:,intx,n=0,s=0;while(n<10)scanf("%d",intx,n=0,s=0;doscanf("%d",for(n=0,s=0;n<10;)scanf("%d",n+,2020/4/25,99,應(yīng)用舉例,【例3.17】把100200之間能被7整除的數(shù),以十個(gè)數(shù)為一行的形式輸出,最后輸出一共有多少個(gè)這樣的數(shù)。,思路:設(shè)變量n,從100變化到200;對(duì)每個(gè)n進(jìn)行判斷,當(dāng)n不能被7整除時(shí),終止本次循環(huán),否則就輸出這個(gè)數(shù);設(shè)變量j作為輸出個(gè)數(shù)的計(jì)數(shù)器,每輸出一個(gè)數(shù)就令j+;當(dāng)輸出了10個(gè)數(shù)時(shí)(即j%10等于0),輸出n退出循環(huán)后輸出j的值。,2020/4/25,100,算法和程序,main()intn,j=0;for(n=100;n<=200;n+)if(n%7!=0)continue;printf("%6d",n);j+;if(j%10=0)printf("n");printf("n");printf("j=%dn",j);,2020/4/25,101,3.6程序設(shè)計(jì)舉例及案例研究,【例3-21】判斷輸入的某個(gè)數(shù)m是否為素?cái)?shù)。若是素?cái)?shù),輸出“YES”,若不是,輸出“NO”。,思路:素?cái)?shù)是指只能被1和它本身整除的數(shù),如5、7、11、17、等。,分別用2、3、,m-1嘗試能否整除整數(shù)m。如果m能被某個(gè)數(shù)整除,則m就不是素?cái)?shù)。,這是一種窮舉算法設(shè)除數(shù)為j,從2循環(huán)到m-1,2020/4/25,102,算法和程序:,#include"math.h"main()intj,m,k;printf("Enteranintegernumber:");scanf("%d",2020/4/25,103,程序的優(yōu)化,對(duì)于窮舉法來(lái)說(shuō),為了提高程序的效率,就要減少嘗試次數(shù)。,#include"math.h"main()intj,m,k;printf("Enteranintegernumber:");scanf("%d",思考:如何輸出100200中所有的素?cái)?shù),2020/4/25,104,程序舉例,例3-23用迭代法求某個(gè)數(shù)的平方根a。迭代公式為:x1=1/2(x0+a/x0).,思路:(1)初值x0=a/2.(2)迭代結(jié)束的判定|x1-x0|=90)printf("Toobigger!n");elseif(Number>=70,改進(jìn),實(shí)際的游戲需要參加者不斷根據(jù)給出的結(jié)論修改價(jià)格值,并期待最終猜中價(jià)格加上循環(huán)控制,直到猜中正確價(jià)格退出對(duì)于密碼輸入,考慮到不小心按錯(cuò)鍵等情況,允許用戶3次輸入密碼進(jìn)行驗(yàn)證,2020/4/25,改進(jìn)后源代碼,2020/4/25,#include“stdio.h”voidmain()intPassword=0,Number=0,price=58,i=0;while(Password!=1234)if(i>=3)return;i+;puts("PleaseinputPassword:");scanf("%d",改進(jìn)后源代碼,2020/4/25,if(Number>=90)printf("Toobigger!Pressanykeytotryagain!n");elseif(Number>=70,

注意事項(xiàng)

本文(C語(yǔ)言程序設(shè)計(jì)第3章C語(yǔ)言控制語(yǔ)句.ppt)為本站會(huì)員(tia****nde)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!