![c語(yǔ)言循環(huán)結(jié)構(gòu)設(shè)計(jì)課件_第1頁(yè)](http://file4.renrendoc.com/view/6ec7c00494a4942425da4e3a9a8d1b5f/6ec7c00494a4942425da4e3a9a8d1b5f1.gif)
![c語(yǔ)言循環(huán)結(jié)構(gòu)設(shè)計(jì)課件_第2頁(yè)](http://file4.renrendoc.com/view/6ec7c00494a4942425da4e3a9a8d1b5f/6ec7c00494a4942425da4e3a9a8d1b5f2.gif)
![c語(yǔ)言循環(huán)結(jié)構(gòu)設(shè)計(jì)課件_第3頁(yè)](http://file4.renrendoc.com/view/6ec7c00494a4942425da4e3a9a8d1b5f/6ec7c00494a4942425da4e3a9a8d1b5f3.gif)
![c語(yǔ)言循環(huán)結(jié)構(gòu)設(shè)計(jì)課件_第4頁(yè)](http://file4.renrendoc.com/view/6ec7c00494a4942425da4e3a9a8d1b5f/6ec7c00494a4942425da4e3a9a8d1b5f4.gif)
![c語(yǔ)言循環(huán)結(jié)構(gòu)設(shè)計(jì)課件_第5頁(yè)](http://file4.renrendoc.com/view/6ec7c00494a4942425da4e3a9a8d1b5f/6ec7c00494a4942425da4e3a9a8d1b5f5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
6.1循環(huán)語(yǔ)句概述
6.2while語(yǔ)句
6.3do-while語(yǔ)句
6.4for語(yǔ)句
6.5break、continue和goto語(yǔ)句
6.6循環(huán)的嵌套
6.7復(fù)合結(jié)構(gòu)程序舉例
6.8C語(yǔ)句小結(jié)1第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)6.1循環(huán)語(yǔ)
C語(yǔ)言有while、do-while、和for語(yǔ)句三種循環(huán)結(jié)構(gòu)語(yǔ)句。6.1循環(huán)語(yǔ)句概述2C語(yǔ)言有while、do-while二、while語(yǔ)句的執(zhí)行過(guò)程1、求解表達(dá)式。如果其值為真(非0),轉(zhuǎn)第2步;否則轉(zhuǎn)第3步。2、執(zhí)行循環(huán)體語(yǔ)句組,然后轉(zhuǎn)1。3、執(zhí)行while語(yǔ)句的下一條語(yǔ)句。循環(huán)體語(yǔ)句組當(dāng)型循環(huán)真假假條件P假求解表達(dá)式6.2while語(yǔ)句一、while語(yǔ)句的一般形式while(表達(dá)式)
{循環(huán)體語(yǔ)句組}表達(dá)式為循環(huán)控制條件3二、while語(yǔ)句的執(zhí)行過(guò)程循環(huán)體語(yǔ)句組當(dāng)型循環(huán)真假假條件循環(huán)體語(yǔ)句組當(dāng)型循環(huán)真假假條件P假求解表達(dá)式例6.1計(jì)算并輸出1+2+3+…+n的值4循環(huán)體語(yǔ)句組當(dāng)型循環(huán)真假假條件P假求解表達(dá)式例6.1二、do—while語(yǔ)句執(zhí)行流程
1、執(zhí)行循環(huán)體語(yǔ)句組。
2、計(jì)算“循環(huán)繼續(xù)條件”表達(dá)式,如果“循環(huán)繼續(xù)條件”表達(dá)式的值為非0(真),則轉(zhuǎn)向1繼續(xù)執(zhí)行;否則,轉(zhuǎn)向3。3、執(zhí)行do-while的下一條語(yǔ)句。條件P直到型循環(huán)A假真求解表達(dá)式循環(huán)體語(yǔ)句組假6.3do—while語(yǔ)句一、do—while語(yǔ)句的一般形式是:
do{
循環(huán)體語(yǔ)句組
}while(循環(huán)繼續(xù)表達(dá)式);
5二、do—while語(yǔ)句執(zhí)行流程條件P直到A假真求解表?xiàng)l件P直到型循環(huán)A假真求解表達(dá)式循環(huán)體語(yǔ)句組假例6.1計(jì)算并輸出1+2+3+…+n的值6條件P直到A假真求解表達(dá)式循環(huán)體語(yǔ)句組假例6.1計(jì)算并輸循環(huán)條件第一次就為假(如輸入-1)時(shí)會(huì)怎樣?
例6.1計(jì)算并輸出1+2+3……+n的值7循環(huán)條件第一次就為假(如輸入-1)時(shí)會(huì)怎樣?例6.1計(jì)算二、執(zhí)行流程1、求解表達(dá)式1。2、求解表達(dá)式2。如果其值為真(非0),執(zhí)行第3步;否則,轉(zhuǎn)至第4步。3、執(zhí)行循環(huán)體語(yǔ)句組,并求解表達(dá)式3,然后轉(zhuǎn)向2。4、執(zhí)行for語(yǔ)句的下一條語(yǔ)句。
6.4for語(yǔ)句一、一般形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體語(yǔ)句組}8二、執(zhí)行流程 6.4for語(yǔ)句一、一般例6.1計(jì)算并輸出1+2+3+…+n的值9例6.1計(jì)算并輸出1+2+3+…+n的值9sum=0的作用?
例6.1計(jì)算并輸出1+2+3+…+n的值10sum=0的作用?例6.1計(jì)算并輸出1+2+3+…例6.1計(jì)算并輸出1+2+3+…+n的值11例6.1計(jì)算并輸出1+2+3+…+n的值11例6.1計(jì)算并輸出1+2+3+…+n的值如何減少循環(huán)次數(shù)12例6.1計(jì)算并輸出1+2+3+…+n的值如何減少循環(huán)次數(shù)選擇三種循環(huán)的一般原則如果循環(huán)次數(shù)已知,計(jì)數(shù)控制的循環(huán)用for如果循環(huán)次數(shù)未知,條件控制的循環(huán)用while如果循環(huán)體至少要執(zhí)行一次用do-while這只是“一般”原則,不是“原則”13選擇三種循環(huán)的一般原則如果循環(huán)次數(shù)已知,計(jì)數(shù)控制的循環(huán)136.5break、continue、goto語(yǔ)句
這一類語(yǔ)句的功能是改變程序的結(jié)構(gòu),使程序從其所在的位置轉(zhuǎn)向另一處。一、break語(yǔ)句與Continue語(yǔ)句為了使循環(huán)控制更加靈活,C語(yǔ)言提供了break語(yǔ)句和continue語(yǔ)句。1.一般格式:break;continue;146.5break、continue、goto語(yǔ)句
它的作用是把流程轉(zhuǎn)向所在結(jié)構(gòu)之后。在switch分支結(jié)構(gòu)中,使用break語(yǔ)句可以使流程跳出switch分支結(jié)構(gòu)。同樣的,在循環(huán)結(jié)構(gòu)中,使用break語(yǔ)句使流程跳出當(dāng)前的循環(huán)層,轉(zhuǎn)向執(zhí)行該循環(huán)結(jié)構(gòu)后面的語(yǔ)句。
2.功能(1)break:強(qiáng)行結(jié)束其所在的那一層循環(huán)。(2)continue:強(qiáng)行結(jié)束本次循環(huán)。對(duì)于for循環(huán),跳過(guò)循環(huán)體其余語(yǔ)句,轉(zhuǎn)向循環(huán)變量增量表達(dá)式的計(jì)算;對(duì)于while和do-while循環(huán),跳過(guò)循環(huán)體其余語(yǔ)句,但轉(zhuǎn)向循環(huán)繼續(xù)條件的判定。3.break和continue語(yǔ)句對(duì)循環(huán)控制的影響如下:二、goto語(yǔ)句goto被稱為無(wú)條件轉(zhuǎn)移語(yǔ)句。由兩部分組成:goto標(biāo)號(hào);標(biāo)號(hào):語(yǔ)句
15它的作用是把流程轉(zhuǎn)向所在結(jié)構(gòu)之后。在switch分支
……16 ……16
……17 ……17韓信有一隊(duì)兵,他想知道有多少人,便讓士兵排隊(duì)報(bào)數(shù)。按從1至5報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為1;按從1至6報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為5;按從1至7報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為4;最后再按從1至11報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為10。你知道韓信至少有多少兵嗎?設(shè)兵數(shù)為x,則x應(yīng)滿足:x%5==1&&x%6==5&&x%7==4&&x%11==10窮舉法,對(duì)x從1開(kāi)始試驗(yàn)例6.2韓信點(diǎn)兵
18韓信有一隊(duì)兵,他想知道有多少人,便讓士兵排隊(duì)報(bào)數(shù)。按從1至5#include<stdio.h>main(){intx;
for(x=1;x<5000;x++){
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x); } } }
“瞎貓碰死耗子”例6.2韓信點(diǎn)兵19#include<stdio.h>“瞎貓碰死耗子”例6.2#include<stdio.h>main(){intx; for(x=1;;x++){
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x); } } }“死循環(huán)”例6.2韓信點(diǎn)兵20#include<stdio.h>“死循環(huán)”例6.2韓#include<stdio.h>main(){
intx;
for(x=1;;x++) {
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x);
gotoEND;
} }END:;
}例6.2韓信點(diǎn)兵-goto
21#include<stdio.h>例6.2韓信點(diǎn)兵-g#include<stdio.h>main(){
intx;
for(x=1;;x++) {
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x);
break;
} } }例6.2韓信點(diǎn)兵-break
22#include<stdio.h>例6.2韓信點(diǎn)兵-b#include<stdio.h>#include<stdlib.h>main(){
intx;
for(x=1;;x++) {
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x);
exit(0);} } }標(biāo)準(zhǔn)庫(kù)函數(shù),作用是終止整個(gè)程序的執(zhí)行,強(qiáng)制返回操作系統(tǒng)
例6.2韓信點(diǎn)兵-break23#include<stdio.h>標(biāo)準(zhǔn)庫(kù)函數(shù),作用是終止整#include<stdio.h>main(){
intx;
intfind=0;/*置找到標(biāo)志為假*/
for(x=1;!find;x++) {
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x);
find=1;/*置找到標(biāo)志為真*/
} } }結(jié)構(gòu)清晰的程序例6.2韓信點(diǎn)兵-標(biāo)志變量24#include<stdio.h>結(jié)構(gòu)清晰的程序例6.2使用goto語(yǔ)句的原則主張少用、慎用,而不是禁用保證使用之后,程序仍然是單入口,單出口不要使用一個(gè)以上的標(biāo)號(hào)不要用goto語(yǔ)句往回跳,要向下跳不要讓goto語(yǔ)句制造出永遠(yuǎn)不會(huì)被執(zhí)行的代碼25使用goto語(yǔ)句的原則主張少用、慎用,而不是禁用25
循環(huán)語(yǔ)句的循環(huán)體內(nèi),又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。嵌套在循環(huán)體內(nèi)的循環(huán)稱語(yǔ)句稱為內(nèi)循環(huán),外面的循環(huán)語(yǔ)句稱為外循環(huán)。如果內(nèi)循環(huán)體中又有嵌套的循環(huán)語(yǔ)句,稱為多層循環(huán)。While、do-while、for三種循環(huán)都可以互相嵌套。
6.6循環(huán)的嵌套26循環(huán)語(yǔ)句的循環(huán)體內(nèi),又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為例6.3輸入n值,計(jì)算并輸出1!+2!+3!+…+n!每次單獨(dú)計(jì)算累加項(xiàng)27例6.3輸入n值,計(jì)算并輸出1!+2!+3!利用前項(xiàng)計(jì)算后項(xiàng)例6.3輸入n值,計(jì)算并輸出1!+2!+3!+…+n!28利用前項(xiàng)例6.3輸入n值,計(jì)算并輸出1!+2!
C語(yǔ)言允許循環(huán)語(yǔ)句與分支結(jié)構(gòu)語(yǔ)句聯(lián)用,即循環(huán)體內(nèi)可包含一個(gè)完整的分支結(jié)構(gòu),也可以在分支結(jié)構(gòu)下包含一個(gè)完整的循環(huán)體。這樣的程序結(jié)構(gòu)被稱為復(fù)合程序結(jié)構(gòu),復(fù)合程序結(jié)構(gòu)同樣必須做到嵌套層次清楚。(即搞清楚分支結(jié)構(gòu)的范圍以及循環(huán)體的范圍)6.7復(fù)合結(jié)構(gòu)程序舉例29C語(yǔ)言允許循環(huán)語(yǔ)句與分支結(jié)構(gòu)語(yǔ)句聯(lián)用,即循環(huán)體例6.4:輸出10~100之間的全部素?cái)?shù)。所謂素?cái)?shù)n是指除1和n之外,不能被2~(n-1)之間的任何整數(shù)整除。算法設(shè)計(jì)要點(diǎn):(1)顯然,只要設(shè)計(jì)出判斷某數(shù)n是否是素?cái)?shù)的算法,外面再套一個(gè)for循環(huán)即可。(2)判斷某數(shù)n是否是素?cái)?shù)的算法:根據(jù)素?cái)?shù)的定義,用2~sqrt(n)之間的每一個(gè)數(shù)去整除n,如果都不能被整除,則表示該數(shù)是一個(gè)素?cái)?shù)。判斷一個(gè)數(shù)是否能被另一個(gè)數(shù)整除,可通過(guò)判斷它們整除的余數(shù)是否為0來(lái)實(shí)現(xiàn)。30例6.4:輸出10~100之間的全部素?cái)?shù)。所謂素?cái)?shù)n是指除1參考源程序如下:#include<math.h>main()
{intn=11,j;
for(;n<=100;n+=2)
{for(i=2;i<=sqrt(n);i++)
if(n%i==0)
break;
if(i>sqrt(n)) printf("%6d",n);}
}
★循環(huán)嵌套時(shí),break和continue只影響包含它們的最內(nèi)層循環(huán),與外層循環(huán)無(wú)關(guān),而goto可以跳出多重循環(huán)。31參考源程序如下:★循環(huán)嵌套時(shí),break和continue只判斷素?cái)?shù)用到的庫(kù)函數(shù)doublesqrt(doublex)求x的平方根#include<math.h>在math.h中有常用的數(shù)學(xué)函數(shù)如:fab(x):求x的絕對(duì)值log(x):求lnx的值,x應(yīng)大于0log10(x):求lgx的值,x應(yīng)大于0exp(x):求expow(x,y):求xysin(x):求sinx的值,x為弧度值,不是角度值cos(x):求cosx的值,x為弧度值,不是角度值32判斷素?cái)?shù)用到的庫(kù)函數(shù)doublesqrt(doublex例6.5:猜數(shù)游戲。由計(jì)算機(jī)“想”一個(gè)100以內(nèi)的數(shù)請(qǐng)你猜,如果你猜對(duì)了,則結(jié)束游戲,否則計(jì)算機(jī)給出提示,告訴你所猜的數(shù)是太大還是太小,直到你猜中為止。計(jì)算機(jī)記錄你猜的次數(shù),以此可以反映出你猜的水平。#include<stdio.h>#include<stdlib.h>main(){intmagic;intguess;intcounter=0;randomize();magic=random(100);
33例6.5:猜數(shù)游戲。由計(jì)算機(jī)“想”一個(gè)100以內(nèi)的數(shù)請(qǐng)你猜,do{printf("\nguessthemagicnumber:");scanf("%d",&guess);counter++;if(guess>magic)printf("****Wrong****toobig\n");elseif(guess<magic)printf("****Wrong****toosmall\n");}while(guess!=magic);printf("****Right****\n");printf("guesscounteris%d\n",counter);getch();}34do{34猜數(shù)游戲用到的庫(kù)函數(shù)怎樣模擬計(jì)算機(jī)“想”一個(gè)數(shù)呢?隨機(jī)函數(shù)intrandom(intnum)產(chǎn)生[0,num-1]之間的隨機(jī)數(shù)magic=random(100);#include<stdlib.h>randominze();隨機(jī)數(shù)產(chǎn)生器初始化35猜數(shù)游戲用到的庫(kù)函數(shù)怎樣模擬計(jì)算機(jī)“想”一個(gè)數(shù)呢?356.8C語(yǔ)句小結(jié)C語(yǔ)言的語(yǔ)句可分為以下四類:簡(jiǎn)單語(yǔ)句、空語(yǔ)句、復(fù)合語(yǔ)句和流程控制語(yǔ)句。簡(jiǎn)單語(yǔ)句表達(dá)式語(yǔ)句(表達(dá)式;)函數(shù)調(diào)用語(yǔ)句(函數(shù)名(參數(shù)表);)空語(yǔ)句(;)復(fù)合語(yǔ)句({一條或多條語(yǔ)句})條件語(yǔ)句(if語(yǔ)句,switch語(yǔ)句)結(jié)構(gòu)化語(yǔ)句while語(yǔ)句循環(huán)語(yǔ)句do-while語(yǔ)句for語(yǔ)句流程控制語(yǔ)句break語(yǔ)句非結(jié)構(gòu)化語(yǔ)句continue語(yǔ)句return語(yǔ)句非限定轉(zhuǎn)向語(yǔ)句(goto語(yǔ)句)語(yǔ)言數(shù)據(jù)操作語(yǔ)句C366.8C語(yǔ)句小結(jié)簡(jiǎn)單語(yǔ)句表達(dá)式語(yǔ)句(表達(dá)式;)C一、簡(jiǎn)單語(yǔ)句1.表達(dá)式語(yǔ)句(1)表達(dá)式語(yǔ)句一般形式:表達(dá)式;(2)類別:運(yùn)算符表達(dá)式語(yǔ)句、賦值語(yǔ)句 例:A++;x=1;(3)作用:計(jì)算表達(dá)式或改變變量的值函數(shù)調(diào)用語(yǔ)句:(1)函數(shù)調(diào)用語(yǔ)句一般形式:函數(shù)名(實(shí)際參數(shù)列表);例:z=max(a,b);(max:用戶自定義函數(shù))
sqrt(x)(求x的平方根)(sqrt:庫(kù)函數(shù))
調(diào)用庫(kù)函數(shù)時(shí)要注意:在程序中要包含相應(yīng)的頭文件例如:#include<math.h>(2)作用:完成特定功能37一、簡(jiǎn)單語(yǔ)句37二、空語(yǔ)句空語(yǔ)句用一個(gè)分號(hào)表示,其一般形式為:
;三、復(fù)合語(yǔ)句(分程序)用{}括起來(lái)的語(yǔ)句,每一個(gè)語(yǔ)句后都有“;”一般形式:{[內(nèi)部數(shù)據(jù)說(shuō)明;]語(yǔ)句1;……語(yǔ)句n;}注意:
(1)在復(fù)合語(yǔ)句中說(shuō)明的變量,是局部變量,僅在復(fù)合語(yǔ)句中有效。38二、空語(yǔ)句38(2)用一對(duì)花括號(hào){}將多條語(yǔ)句組合在一起,在語(yǔ)法上相當(dāng)于一條語(yǔ)句。例.main(){intx=1;
{intx=2;{intx=3;
printf(“x=%d”,x);
}
printf(“x=%d”,x);
}
printf(“x=%d”,x);
}39(2)用一對(duì)花括號(hào){}將多條語(yǔ)句組合在一起,在語(yǔ)法上相當(dāng)于第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
6.1循環(huán)語(yǔ)句概述
6.2while語(yǔ)句
6.3do-while語(yǔ)句
6.4for語(yǔ)句
6.5break、continue和goto語(yǔ)句
6.6循環(huán)的嵌套
6.7復(fù)合結(jié)構(gòu)程序舉例
6.8C語(yǔ)句小結(jié)40第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)6.1循環(huán)語(yǔ)
C語(yǔ)言有while、do-while、和for語(yǔ)句三種循環(huán)結(jié)構(gòu)語(yǔ)句。6.1循環(huán)語(yǔ)句概述41C語(yǔ)言有while、do-while二、while語(yǔ)句的執(zhí)行過(guò)程1、求解表達(dá)式。如果其值為真(非0),轉(zhuǎn)第2步;否則轉(zhuǎn)第3步。2、執(zhí)行循環(huán)體語(yǔ)句組,然后轉(zhuǎn)1。3、執(zhí)行while語(yǔ)句的下一條語(yǔ)句。循環(huán)體語(yǔ)句組當(dāng)型循環(huán)真假假條件P假求解表達(dá)式6.2while語(yǔ)句一、while語(yǔ)句的一般形式while(表達(dá)式)
{循環(huán)體語(yǔ)句組}表達(dá)式為循環(huán)控制條件42二、while語(yǔ)句的執(zhí)行過(guò)程循環(huán)體語(yǔ)句組當(dāng)型循環(huán)真假假條件循環(huán)體語(yǔ)句組當(dāng)型循環(huán)真假假條件P假求解表達(dá)式例6.1計(jì)算并輸出1+2+3+…+n的值43循環(huán)體語(yǔ)句組當(dāng)型循環(huán)真假假條件P假求解表達(dá)式例6.1二、do—while語(yǔ)句執(zhí)行流程
1、執(zhí)行循環(huán)體語(yǔ)句組。
2、計(jì)算“循環(huán)繼續(xù)條件”表達(dá)式,如果“循環(huán)繼續(xù)條件”表達(dá)式的值為非0(真),則轉(zhuǎn)向1繼續(xù)執(zhí)行;否則,轉(zhuǎn)向3。3、執(zhí)行do-while的下一條語(yǔ)句。條件P直到型循環(huán)A假真求解表達(dá)式循環(huán)體語(yǔ)句組假6.3do—while語(yǔ)句一、do—while語(yǔ)句的一般形式是:
do{
循環(huán)體語(yǔ)句組
}while(循環(huán)繼續(xù)表達(dá)式);
44二、do—while語(yǔ)句執(zhí)行流程條件P直到A假真求解表?xiàng)l件P直到型循環(huán)A假真求解表達(dá)式循環(huán)體語(yǔ)句組假例6.1計(jì)算并輸出1+2+3+…+n的值45條件P直到A假真求解表達(dá)式循環(huán)體語(yǔ)句組假例6.1計(jì)算并輸循環(huán)條件第一次就為假(如輸入-1)時(shí)會(huì)怎樣?
例6.1計(jì)算并輸出1+2+3……+n的值46循環(huán)條件第一次就為假(如輸入-1)時(shí)會(huì)怎樣?例6.1計(jì)算二、執(zhí)行流程1、求解表達(dá)式1。2、求解表達(dá)式2。如果其值為真(非0),執(zhí)行第3步;否則,轉(zhuǎn)至第4步。3、執(zhí)行循環(huán)體語(yǔ)句組,并求解表達(dá)式3,然后轉(zhuǎn)向2。4、執(zhí)行for語(yǔ)句的下一條語(yǔ)句。
6.4for語(yǔ)句一、一般形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體語(yǔ)句組}47二、執(zhí)行流程 6.4for語(yǔ)句一、一般例6.1計(jì)算并輸出1+2+3+…+n的值48例6.1計(jì)算并輸出1+2+3+…+n的值9sum=0的作用?
例6.1計(jì)算并輸出1+2+3+…+n的值49sum=0的作用?例6.1計(jì)算并輸出1+2+3+…例6.1計(jì)算并輸出1+2+3+…+n的值50例6.1計(jì)算并輸出1+2+3+…+n的值11例6.1計(jì)算并輸出1+2+3+…+n的值如何減少循環(huán)次數(shù)51例6.1計(jì)算并輸出1+2+3+…+n的值如何減少循環(huán)次數(shù)選擇三種循環(huán)的一般原則如果循環(huán)次數(shù)已知,計(jì)數(shù)控制的循環(huán)用for如果循環(huán)次數(shù)未知,條件控制的循環(huán)用while如果循環(huán)體至少要執(zhí)行一次用do-while這只是“一般”原則,不是“原則”52選擇三種循環(huán)的一般原則如果循環(huán)次數(shù)已知,計(jì)數(shù)控制的循環(huán)136.5break、continue、goto語(yǔ)句
這一類語(yǔ)句的功能是改變程序的結(jié)構(gòu),使程序從其所在的位置轉(zhuǎn)向另一處。一、break語(yǔ)句與Continue語(yǔ)句為了使循環(huán)控制更加靈活,C語(yǔ)言提供了break語(yǔ)句和continue語(yǔ)句。1.一般格式:break;continue;536.5break、continue、goto語(yǔ)句
它的作用是把流程轉(zhuǎn)向所在結(jié)構(gòu)之后。在switch分支結(jié)構(gòu)中,使用break語(yǔ)句可以使流程跳出switch分支結(jié)構(gòu)。同樣的,在循環(huán)結(jié)構(gòu)中,使用break語(yǔ)句使流程跳出當(dāng)前的循環(huán)層,轉(zhuǎn)向執(zhí)行該循環(huán)結(jié)構(gòu)后面的語(yǔ)句。
2.功能(1)break:強(qiáng)行結(jié)束其所在的那一層循環(huán)。(2)continue:強(qiáng)行結(jié)束本次循環(huán)。對(duì)于for循環(huán),跳過(guò)循環(huán)體其余語(yǔ)句,轉(zhuǎn)向循環(huán)變量增量表達(dá)式的計(jì)算;對(duì)于while和do-while循環(huán),跳過(guò)循環(huán)體其余語(yǔ)句,但轉(zhuǎn)向循環(huán)繼續(xù)條件的判定。3.break和continue語(yǔ)句對(duì)循環(huán)控制的影響如下:二、goto語(yǔ)句goto被稱為無(wú)條件轉(zhuǎn)移語(yǔ)句。由兩部分組成:goto標(biāo)號(hào);標(biāo)號(hào):語(yǔ)句
54它的作用是把流程轉(zhuǎn)向所在結(jié)構(gòu)之后。在switch分支
……55 ……16
……56 ……17韓信有一隊(duì)兵,他想知道有多少人,便讓士兵排隊(duì)報(bào)數(shù)。按從1至5報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為1;按從1至6報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為5;按從1至7報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為4;最后再按從1至11報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為10。你知道韓信至少有多少兵嗎?設(shè)兵數(shù)為x,則x應(yīng)滿足:x%5==1&&x%6==5&&x%7==4&&x%11==10窮舉法,對(duì)x從1開(kāi)始試驗(yàn)例6.2韓信點(diǎn)兵
57韓信有一隊(duì)兵,他想知道有多少人,便讓士兵排隊(duì)報(bào)數(shù)。按從1至5#include<stdio.h>main(){intx;
for(x=1;x<5000;x++){
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x); } } }
“瞎貓碰死耗子”例6.2韓信點(diǎn)兵58#include<stdio.h>“瞎貓碰死耗子”例6.2#include<stdio.h>main(){intx; for(x=1;;x++){
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x); } } }“死循環(huán)”例6.2韓信點(diǎn)兵59#include<stdio.h>“死循環(huán)”例6.2韓#include<stdio.h>main(){
intx;
for(x=1;;x++) {
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x);
gotoEND;
} }END:;
}例6.2韓信點(diǎn)兵-goto
60#include<stdio.h>例6.2韓信點(diǎn)兵-g#include<stdio.h>main(){
intx;
for(x=1;;x++) {
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x);
break;
} } }例6.2韓信點(diǎn)兵-break
61#include<stdio.h>例6.2韓信點(diǎn)兵-b#include<stdio.h>#include<stdlib.h>main(){
intx;
for(x=1;;x++) {
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x);
exit(0);} } }標(biāo)準(zhǔn)庫(kù)函數(shù),作用是終止整個(gè)程序的執(zhí)行,強(qiáng)制返回操作系統(tǒng)
例6.2韓信點(diǎn)兵-break62#include<stdio.h>標(biāo)準(zhǔn)庫(kù)函數(shù),作用是終止整#include<stdio.h>main(){
intx;
intfind=0;/*置找到標(biāo)志為假*/
for(x=1;!find;x++) {
if(x%5==1&&x%6==5&&x%7==4&&x%11==10) { printf("x=%d\n",x);
find=1;/*置找到標(biāo)志為真*/
} } }結(jié)構(gòu)清晰的程序例6.2韓信點(diǎn)兵-標(biāo)志變量63#include<stdio.h>結(jié)構(gòu)清晰的程序例6.2使用goto語(yǔ)句的原則主張少用、慎用,而不是禁用保證使用之后,程序仍然是單入口,單出口不要使用一個(gè)以上的標(biāo)號(hào)不要用goto語(yǔ)句往回跳,要向下跳不要讓goto語(yǔ)句制造出永遠(yuǎn)不會(huì)被執(zhí)行的代碼64使用goto語(yǔ)句的原則主張少用、慎用,而不是禁用25
循環(huán)語(yǔ)句的循環(huán)體內(nèi),又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。嵌套在循環(huán)體內(nèi)的循環(huán)稱語(yǔ)句稱為內(nèi)循環(huán),外面的循環(huán)語(yǔ)句稱為外循環(huán)。如果內(nèi)循環(huán)體中又有嵌套的循環(huán)語(yǔ)句,稱為多層循環(huán)。While、do-while、for三種循環(huán)都可以互相嵌套。
6.6循環(huán)的嵌套65循環(huán)語(yǔ)句的循環(huán)體內(nèi),又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為例6.3輸入n值,計(jì)算并輸出1!+2!+3!+…+n!每次單獨(dú)計(jì)算累加項(xiàng)66例6.3輸入n值,計(jì)算并輸出1!+2!+3!利用前項(xiàng)計(jì)算后項(xiàng)例6.3輸入n值,計(jì)算并輸出1!+2!+3!+…+n!67利用前項(xiàng)例6.3輸入n值,計(jì)算并輸出1!+2!
C語(yǔ)言允許循環(huán)語(yǔ)句與分支結(jié)構(gòu)語(yǔ)句聯(lián)用,即循環(huán)體內(nèi)可包含一個(gè)完整的分支結(jié)構(gòu),也可以在分支結(jié)構(gòu)下包含一個(gè)完整的循環(huán)體。這樣的程序結(jié)構(gòu)被稱為復(fù)合程序結(jié)構(gòu),復(fù)合程序結(jié)構(gòu)同樣必須做到嵌套層次清楚。(即搞清楚分支結(jié)構(gòu)的范圍以及循環(huán)體的范圍)6.7復(fù)合結(jié)構(gòu)程序舉例68C語(yǔ)言允許循環(huán)語(yǔ)句與分支結(jié)構(gòu)語(yǔ)句聯(lián)用,即循環(huán)體例6.4:輸出10~100之間的全部素?cái)?shù)。所謂素?cái)?shù)n是指除1和n之外,不能被2~(n-1)之間的任何整數(shù)整除。算法設(shè)計(jì)要點(diǎn):(1)顯然,只要設(shè)計(jì)出判斷某數(shù)n是否是素?cái)?shù)的算法,外面再套一個(gè)for循環(huán)即可。(2)判斷某數(shù)n是否是素?cái)?shù)的算法:根據(jù)素?cái)?shù)的定義,用2~sqrt(n)之間的每一個(gè)數(shù)去整除n,如果都不能被整除,則表示該數(shù)是一個(gè)素?cái)?shù)。判斷一個(gè)數(shù)是否能被另一個(gè)數(shù)整除,可通過(guò)判斷它們整除的余數(shù)是否為0來(lái)實(shí)現(xiàn)。69例6.4:輸出10~100之間的全部素?cái)?shù)。所謂素?cái)?shù)n是指除1參考源程序如下:#include<math.h>main()
{intn=11,j;
for(;n<=100;n+=2)
{for(i=2;i<=sqrt(n);i++)
if(n%i==0)
break;
if(i>sqrt(n)) printf("%6d",n);}
}
★循環(huán)嵌套時(shí),break和continue只影響包含它們的最內(nèi)層循環(huán),與外層循環(huán)無(wú)關(guān),而goto可以跳出多重循環(huán)。70參考源程序如下:★循環(huán)嵌套時(shí),break和continue只判斷素?cái)?shù)用到的庫(kù)函數(shù)doublesqrt(doublex)求x的平方根#include<math.h>在math.h中有常用的數(shù)學(xué)函數(shù)如:fab(x):求x的絕對(duì)值log(x):求lnx的值,x應(yīng)大于0log10(x):求lgx的值,x應(yīng)大于0exp(x):求expow(x,y):求xysin(x):求sinx的值,x為弧度值,不是角度值cos(x):求cosx的值,x為弧度值,不是角度值71判斷素?cái)?shù)用到的庫(kù)函數(shù)doublesqrt(doublex例6.5:猜數(shù)游戲。由計(jì)算機(jī)“想”一個(gè)100以內(nèi)的數(shù)請(qǐng)你猜,如果你猜對(duì)了,則結(jié)束游戲,否則計(jì)算機(jī)給出提示,告訴你所猜的數(shù)是太大還是太小,直到你猜中為止。計(jì)算機(jī)記錄你猜的次數(shù),以此可以反映出你猜的水平。#include<stdio.h>#include<stdlib.h>main(){intmagic;intguess;intcounter=0;randomize();magic=random(100);
72例6.5:猜數(shù)游戲。由計(jì)算機(jī)“想”一個(gè)100以內(nèi)的數(shù)請(qǐng)你猜,do{printf("\nguessthemagicnumber:");scanf("%d",&guess);counter++;if(guess>magic)printf("****Wrong****toobig\n");elseif(guess<magic)printf("****Wrong****toosmall\n");}while(guess!=magic);printf("****Right****\n");printf("guesscounter
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度旅游資產(chǎn)抵押經(jīng)營(yíng)合同
- 二零二五年度物業(yè)管理交接及社區(qū)服務(wù)優(yōu)化合同
- 2025年中國(guó)塑料工藝彩片市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)快速水果削皮器市場(chǎng)調(diào)查研究報(bào)告
- 佛山2025年廣東佛山市季華中學(xué)招聘數(shù)學(xué)合同制教師筆試歷年參考題庫(kù)附帶答案詳解
- 2025-2030年文化用品禮品卡行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年古村落復(fù)原與布局仿真行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025至2030年多刀切割機(jī)項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年干果蜜餞項(xiàng)目可行性研究報(bào)告
- 2025年中國(guó)高效活性填料市場(chǎng)調(diào)查研究報(bào)告
- 睡眠障礙護(hù)理查房課件
- 金融工程.鄭振龍(全套課件560P)
- 英語(yǔ)演講技巧和欣賞課件
- 物流托運(yùn)單模板
- 【員工關(guān)系管理研究國(guó)內(nèi)外文獻(xiàn)綜述2800字】
- 六年級(jí)語(yǔ)文下冊(cè)閱讀及參考答案(12篇)
- 蘇教版(蘇少版)九年級(jí)美術(shù)下冊(cè)全冊(cè)課件
- 2022年江蘇省鹽城市中考英語(yǔ)試題及參考答案
- 中國(guó)文化簡(jiǎn)介英文版(ChineseCultureintroduction)課件
- 文化差異與跨文化交際課件(完整版)
- 工程經(jīng)濟(jì)學(xué)完整版課件全套ppt教程
評(píng)論
0/150
提交評(píng)論