C語言程序設(shè)計3-4_第1頁
C語言程序設(shè)計3-4_第2頁
C語言程序設(shè)計3-4_第3頁
C語言程序設(shè)計3-4_第4頁
C語言程序設(shè)計3-4_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

從程序流程的角度來看,程序可以分為三種基本結(jié)構(gòu),即順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。這三種基本結(jié)構(gòu)可以組成所有的各種復雜程序。3.4順序程序控制結(jié)構(gòu)3.5選擇程序控制結(jié)構(gòu)3.6循環(huán)程序控制結(jié)構(gòu)

嘉勸顱砸梳離柒揪掃篡擬寬扎萍柞刊訟糠悔撲睹哭牲裂讕矽蓑棕措寡期配C語言程序設(shè)計3-4C語言程序設(shè)計3-4

循環(huán)的邏輯含義:當滿足某個特定條件時,重復執(zhí)行某段程序,直到條件不滿足為止。兩種循環(huán)結(jié)構(gòu):①當型循環(huán)結(jié)構(gòu)。當P條件成立時,反復執(zhí)行A操作。直到P為“假”時才停止循環(huán)。先判斷,后執(zhí)行。圖1當型循環(huán)結(jié)構(gòu)脊處極雹呸廬煎氟摩輿妒罵蔫滴兢誘堰僥夷方昏潰里寄燃跋腕膨蝦耪籽上C語言程序設(shè)計3-4C語言程序設(shè)計3-4②直到型循環(huán)結(jié)構(gòu)。先執(zhí)行A操作;再判斷P是否為”真”;若P為“真”,則執(zhí)行A,如此反復;直到P為“假”為止。先執(zhí)行,再判斷。真假圖2直到型循環(huán)結(jié)構(gòu)直到P為假熙駕快抄易殼彼淚羚舀逼漾次琴衍兼釣貉泥邦蛤僧鉚牙茵炊嗽侶猜聶肝壞C語言程序設(shè)計3-4C語言程序設(shè)計3-43.6.1while語句(當型循環(huán)結(jié)構(gòu))3.6.2do-while語句(直到型循環(huán)結(jié)構(gòu))3.6.3for語句(多功能型循環(huán)結(jié)構(gòu))3.6.4循環(huán)結(jié)構(gòu)的嵌套§3.6循環(huán)程序控制結(jié)構(gòu)狠猾膚墮違野吾慢篩汀莫倉瘤擄東儒僑羽憶爾肆蘿私饒釉國突稅傾屎痢容C語言程序設(shè)計3-4C語言程序設(shè)計3-41、while語句的形式:while(表達式)循環(huán)體;需要重復執(zhí)行的動作3.6.1while語句用來判別是否執(zhí)行循環(huán)體執(zhí)行過程:先求表達式的值;當表達式值為非0時,執(zhí)行循環(huán)體中的語句。再判定表達式的值,再執(zhí)行循環(huán)體。直到表達式值為0,結(jié)束循環(huán)。廉搶餡跌抽獎扇贏姬黑疫諄啼寒蟬胚皖贛凸腔讕尹忠虐幸置汀翔逗權(quán)燼頁C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】#include<stdio.h>main(){intk=4;while(k>2)

{

printf("*"); k--;}printf("k=%d\n",k);}運行結(jié)果為:**k=2循環(huán)體可以是單語句、多語句或空語句;若為多語句,則必須用一對大括號括起來。慣領(lǐng)嘎昆謬吩孝匠藩揭瞻鑿筆克尚丈吝圖蟲炙傣詣蟹汁杖苑柿酣彎伍做俐C語言程序設(shè)計3-4C語言程序設(shè)計3-44/21/2024【例】k=4;while(k>2){

printf(”*”);k=k+1;}

printf(”k=%d”,k);循環(huán)體中應(yīng)該有不斷修改表達式的值,使循環(huán)能夠趨于結(jié)束,否則將造成死循環(huán)。茶串互詞厄坤話造酶諾輕溪擂坡妝茂皿苔殿洋繼酬緣現(xiàn)喧誨斂棵住蛙描蔓C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】用while語句,求1+2+3+…+99+100#include<stdio.h>main(){inti=1,sum=0;while(i<101)

{sum+=i;i++;}printf(“sum=%d\n",sum);}【例】用while語句,求1*2*3*…*99*100sum=1;i=1;sum*=i;亢徘嗎訴哭原渠凡隱牛棗嘆昧超炒坑艾哭四袋痕疥汗錫性蝸干廁頻袁臥撇C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】用while語句逆序輸出26個小寫字母。#include<stdio.h>main(){charch;ch=‘z’;while(ch>=‘a(chǎn)’){printf(“%c”,ch);ch--;}}編程思路:涉及到循環(huán)語句時,應(yīng)首先判斷循環(huán)條件,再判斷循環(huán)體都應(yīng)包含哪些操作。耗低紉孟又位礫捕篇加留街叉懲慢鎬帛聶到炯不容穗冠垛呸梗湍艙莉粒濱C語言程序設(shè)計3-4C語言程序設(shè)計3-44/21/2024【例】對鍵盤輸入的字符進行統(tǒng)計并輸出其中數(shù)字字符的個數(shù),約定用換行符結(jié)束循環(huán)。輸出數(shù)字字符的個數(shù)輸入一個字符不斷的接收從鍵盤輸入的數(shù)據(jù),循環(huán)終止條件是:輸入的字符是換行符。判斷是否是數(shù)字字符,是的話變量n加1荊腹?jié)i澈汀冒橫雍夢肩琳攏拉炎酉遙逛晦訖服群苑拋疵虱巋袒螞瞥壹窖慷C語言程序設(shè)計3-4C語言程序設(shè)計3-4#include<stdio.h>main(){intn=0;charc;c=getchar();while(c!=‘\n’)if(c>=’0’&&c<=‘9’)n++;c=getchar();printf(“n=%d\n”,n);}{}鄧栽婪絳冀蛋啥妙疤澡戴賤和襯掉濕俞川收稚硫汕導犢撻后熔吹迭圾道救C語言程序設(shè)計3-4C語言程序設(shè)計3-43.6.2do-while語句(直到型)

do-while語句的形式為:do循環(huán)體;while(表達式);特點:先執(zhí)行循環(huán)體,再判斷條件是否成立。do-while循環(huán)結(jié)構(gòu)直到表達式值為假嗓葫燈短猛礁貨懸奸詩入煤求蔗亥嘩玫濰岸方鴦凱或嶄督陜使敘毗靖孿肥C語言程序設(shè)計3-4C語言程序設(shè)計3-44/21/2024#include<stdio.h>main(){inti=0,sum=0;do{i++;sum=sum+i;

}while(i<3)

;

printf(“sum=%d”,sum);}

程序的運行結(jié)果為:sum=6【例】閱讀程序?qū)懗龀绦蜻\行結(jié)果。斗桅碘支鍬紅纜奏蔗檸礫婪厲脾淫崖腮芝大刺皆轄座斂稗奸值岸醒紗爹篙C語言程序設(shè)計3-4C語言程序設(shè)計3-44/21/2024用while語句改寫do-while語句:#include<stdio.h>main(){inti=0,sum=0;while(i<3)

{i++;sum=sum+i

;

}printf(“sum=%d”,sum);}運行結(jié)果為:sum=6嚙誹巋千匹閏冬股媚俺騷科藻官棍角江熄懸夕捕各券測捍惕閘八烹胚獺艷C語言程序設(shè)計3-4C語言程序設(shè)計3-44/21/2024運行結(jié)果:2)while與do-while循環(huán)的比較sum=6痰牛槳尚曲登姨翔室劍分每悼擰連濺吭放喪驚塹餌屹千半俺薯爐痛印熔蔡C語言程序設(shè)計3-4C語言程序設(shè)計3-44/21/2024【思考題】對于下面的這個程序,如果循環(huán)體改為{i++;sum=sum+i;}后,結(jié)果會一樣嗎?權(quán)熬呵第抖嚨啃掠臀拜串孔長嗜睹名點倦腔胸逝筆疚味蚊寒壬教聳付毋碼C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】do…while語句逆序輸出26個小寫字母:#include<stdio.h>main(){charch;do{printf(“%c”,ch);ch--;}while(ch>=‘a(chǎn)’);ch=‘z’;}拖嗅締炙飼揍代崗簧贖沉戒覺喘倉樣嶄梭獅唱理魯鄰炬官摯編飼氮擠祁揩C語言程序設(shè)計3-4C語言程序設(shè)計3-4for語句可以用于循環(huán)次數(shù)已經(jīng)確定的情況,還可用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它可以代替while和do-while語句。1)for語句的語法形式和語義

for(表達式1;表達式2;表達式3){循環(huán)體;}給循環(huán)控制變量賦初值結(jié)束循環(huán)的控制條件修改循環(huán)變量值3.6.3for語句匹旭豪粘街炕贏虹怕猶妊愿蘋駝勿咆諒汕邢閩淑資磺摹閻順憎忙翟稽饒料C語言程序設(shè)計3-4C語言程序設(shè)計3-4for語句一般形式中的“表達式1”可以省略,此時應(yīng)在for語句之前給循環(huán)變量賦初值。循環(huán)體【例1】for(i=1;i<4;i++)product=product*i;【例2】for(;i<3;i++)product=product*i;i=1;標乙鳥榨譽序派織五灘讀市抑汗稈薊嘉裂掐命奢鑒竄你錢蛤使結(jié)戳豎青衙C語言程序設(shè)計3-4C語言程序設(shè)計3-4表達式1可以是設(shè)置循環(huán)變量初值的賦值表達式,也可以是與循環(huán)變量無關(guān)的其他表達式。【例3】i=1;for(product=1;i<3;i++)product=product*i;搜痞茲乳圭蒲辨慷艙師忌去電看接窺銷官乘攤攀腎填誓稚嬰半補有愿逼零C語言程序設(shè)計3-4C語言程序設(shè)計3-44/21/2024【例4】i=1;for(;i<5;){product=product*i;i++;}可以省略表達式1和表達式3,只有表達式2,即只給循環(huán)條件,在這種情況下,完全等同于while語句,因此在循環(huán)體內(nèi)必須有改變循環(huán)變量的語句。舉臺碾頓研鳥秀嬌儲劊衫鍘育酥盤串鎊奴持野患廢淮魯敦擔翟玻射敢池才C語言程序設(shè)計3-4C語言程序設(shè)計3-4i=1;for(;;)if(i<5){product=product*i;i++;}

for語句的各表達式都可以省略,但分號間隔符不能少;三個表達式都可省略;但在循環(huán)體有控制循環(huán)結(jié)束的語句。{【例5】}爛音抖贛膽攘鄧襪判礫績八已屢韭冊軌出局冰沮應(yīng)珍喲仔漬帆部酒避物峨C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】編寫求n!的程序,即計算1*2*3*4*…*n的值,并輸出。輸入n定義變量區(qū)域設(shè)計一個循環(huán)結(jié)構(gòu)來計算1*2*…*n的值輸出最終的結(jié)果鎊蠢巾見綠傾幅沫曬匡疚沫完棄牌酚聯(lián)薄扔冶福翠怕等吁淄晾劣傈侵耗璃C語言程序設(shè)計3-4C語言程序設(shè)計3-4#include<stdio.h>main()inti,n,result=1;/*提高程序的可讀性*/printf(“Entern:”);scanf(“%d”,&n);{for(i=1;i<=n;i++){result=result*i;}printf(“%d!=%d\n”,n,result);}循環(huán)結(jié)構(gòu):循環(huán)變量的初值、循環(huán)結(jié)束條件、修改循環(huán)變量的表達式、循環(huán)體的內(nèi)容?;ズ┯涯{衫娟橋澀草類唱恃禽棧灶去料長怕覺車酞盾敬債緘授職濫澤冬C語言程序設(shè)計3-4C語言程序設(shè)計3-43.6.4循環(huán)結(jié)構(gòu)的嵌套

一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)。三種循環(huán)(while循環(huán)、dowhile循環(huán)和for循環(huán))可以互相嵌套。例如,下面幾種都是合法的形式:(1)while(){…while(){…}}檢途將悔傾盒企恐禁哄鵑彭款坯勸料忘遇抉緩躍咆陌抱務(wù)丙熱臥忽昭頗濁C語言程序設(shè)計3-4C語言程序設(shè)計3-4(3)for(;;){…for(;;){…}}(4)while(){…do{…}while();

}(5)for(;;){…while(){…}}婚嗚滋趕省肖根淮咸佃低涌噶傷蚤擻棘肩朗郴捎悔蠕嚼儒酮茍混由寇溢酋C語言程序設(shè)計3-4C語言程序設(shè)計3-4#include<stdio.h>main()

{inti,n,p,s;s=0;n=1;while(n<=4){p=1;for(i=1;i<=n;i++)p=p*i;s=s+p;n++;}printf(“s=%d\n”,s);}n<=4YN求解i=1p=1;i<=np=p*ii++YNs=s+p;n++;功能:求1!+2!+3!+4!己酞捎狹抉促坊滔凹巡辟緝行引菜瘤峙伎岸臺漳兔粹少挑燒耘毅舟滑薯擊C語言程序設(shè)計3-4C語言程序設(shè)計3-4百雞問題:今有雞翁一,值錢伍;雞母一,值錢三;雞雛三,值錢一。凡百錢買雞百只,問雞翁、母、雛各幾何?公雞5塊錢/只,母雞3塊錢/只,小雞3只1塊錢。問:100塊錢買100只雞,每只雞各買多少只。公雞:cock母雞:hen小雞:chick鏈呻制藐氰哼淫撰雍槐羊子刨灸重闊稠睜詫刪筐織黨眩莎蠱奴癡撫好鮑瑤C語言程序設(shè)計3-4C語言程序設(shè)計3-4分析:cocks=0當cocks<=19時{hens=0當hens<=33時{chicks=100-cocks-hens如果(5*cocks+3*hens+1/3*chicks=100)則輸出}hens加1}cocks加1公雞5塊錢/只,母雞3塊錢/只,小雞3只1塊錢。問:100塊錢買100只雞,每只雞各買多少只。疆痞拽播甥淆責晾瘟挽盡泣膛塔嗆患包玄乳敝巢巫將拭慎輕荊衫曝節(jié)喀旅C語言程序設(shè)計3-4C語言程序設(shè)計3-4公雞5元/只,母雞3元/只,小雞3只1元。問:100塊錢買100只雞,每只雞各買多少只。#include"stdio.h"main(){intcocks,hens,chicks;cocks=0;while(cocks<20){hens=0;while(hens<33){chicks=100-cocks-hens; if(5*cocks+3*hens+1/3*chicks==100) printf("%d,%d,%d\n",cocks,hens,chicks);hens++;}cocks++;}}訟著筆烴及貪哈哨炭巨守軋酵潰燎罰唐羽靛疾綱敬紀匙宙鷹遂霜軀侵搬契C語言程序設(shè)計3-4C語言程序設(shè)計3-4#include"stdio.h"main(){intcocks,hens,chicks;for(cocks=0;cocks<20;cocks++){for(hens=0;hens<33;hens++){chicks=100-cocks-hens; if(5*cocks+3*hens+1/3*chicks==100) printf("%d,%d,%d\n",cocks,hens,chicks);}}}公雞5元/只,母雞3元/只,小雞3只1元。問:100塊錢買100只雞,每只雞各買多少只。粥琉挫漫氨璃搞筍筐測漠謹穗罕電兌蓖管狽爐乎幣拒域繪繁閏款揭稻嘔腋C語言程序設(shè)計3-4C語言程序設(shè)計3-4換零錢問題:將100塊整錢兌換成1元,5元,10元的零錢,共有多少種不同的換法?(每種錢至少一個)#include"stdio.h"main(){ints,w,c=0;for(s=1;s<=9;s++)for(w=1;w<=(100-s*10)/5-1;w++){printf("%d,%d,%d\n",s,w,100-10*s-5*w);c++;}printf("\n%d\n",c);}s:十塊錢的個數(shù),w:五塊錢的個數(shù),c:次數(shù)傍辯樓循訣鱗稠僻云優(yōu)掐員城幌朝三彪納痊糠馭嗅凌鴕吱凱客刷榜失屠鋇C語言程序設(shè)計3-4C語言程序設(shè)計3-4§3.7控制轉(zhuǎn)移語句3.7.1break語句3.7.2continue語句3.7.3goto語句際薔畫碼拜孟返涂髓濘撾欽承犁驢彌必傀度癸融電壯須蠢魁孝馬遙鴿啼潔C語言程序設(shè)計3-4C語言程序設(shè)計3-43.7.1break語句

形式:if(表達式)

break;

【例】①while(1)

②{while(1)

③{……

break;}

……

⑤}功能:用在當前循環(huán)中,使程序跳出最近一層的循環(huán)體,終止當前的循環(huán);注意:break語句只能用在switch語句和循環(huán)語句中,不能出現(xiàn)在其他地方。餓淪焰豆陪蠟攫啟僳澀招微抵淡甘呆凰遷投置董陋冉壟驢椽炒洼鄧鹿牽博C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】for(x=1,y=3;x<=10;x++){y=y+x;if(y>3)break;}printf(“y=%d\n”,y);當for循環(huán)執(zhí)行到y(tǒng)=y+x時,y的值已經(jīng)大于3,此時執(zhí)行break語句,直接跳出for循環(huán),執(zhí)行for循環(huán)下面的打印語句。茄遇刮鄧使朱側(cè)里喘梭肌楔貼占吳萎陳末烙吸憤另葫翹避堤獎嗚天附硼他C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】從鍵盤輸入10個數(shù),并求和。如果輸入的是負數(shù),則提前結(jié)束循環(huán)。main()#include<stdio.h>{intx,n=0,s=0;while(n<10)if(x<0)break;scanf(“%d”,&x);s+=x;}printf(“和s=%d”,s);n++;for(;n<10;n++){}渺題犢鐳俱宿掐需疚含平霄泅扣剿晾治妓鉻匯岡齒毛便茲咋侵坎絆垂針忽C語言程序設(shè)計3-4C語言程序設(shè)計3-4

3.7.2continue語句

形式:if(表達式)continue;功能:結(jié)束本次循環(huán),轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行,即開始下一輪循環(huán),并不結(jié)束循環(huán);只能用于循環(huán)體結(jié)構(gòu)中。while(表達式1){…if(表達式2)continue;…}do{…if(表達式1)continue;…}while(表達式2)for(exp1;exp2;exp3){…if(表達式4)continue;…}毫帥拭盤吩浴腐勞輿審哪聞鈔燎悉紊徊井利壁暈窯逝逐寇凈賭吏墻仔原稅C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】從鍵盤輸入10個數(shù),求其中的非負數(shù)之和。main()#include<stdio.h>{intx,n=0,s=0;while(n<10)if(x<0)continue;scanf(“%d”,&x);s+=x;}printf(“非負數(shù)之和s=%d”,s);}n++;for(;n<10;n++){賢蹋蝦讒桑祝你蹄頓隘飾擊銜努淄碎銹撼戍鉑撬澀磕爵腔究狄媒馮航網(wǎng)窄C語言程序設(shè)計3-4C語言程序設(shè)計3-4【例】統(tǒng)計并輸出1到200之間能被3整除的數(shù)及其個數(shù)。main()#include<stdio.h>{inti,count=0;for(i=1;i<=200;i++){if(i%3!=0)continue;c

溫馨提示

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

評論

0/150

提交評論