版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
第四章程序控制結(jié)構(gòu)算法的基本概念順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)綜合舉例
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
從程序流程的角度來看,程序控制結(jié)構(gòu)可以分為三種基本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。這三種基本結(jié)構(gòu)可以組成所有的大型程序。C語言提供了多種語句來實現(xiàn)這些程序結(jié)構(gòu)。4.1算法的基本概念“算法”(Algorithm)一詞是從9世紀阿拉伯數(shù)學家al-khovarizmi的名字派生的。算法是程序設(shè)計中的重要內(nèi)容,是解決問題的方法、步驟。4.1.1算法的概念與特征
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
在計算機中,算法是指為解決具體問題而采取的確定的方法和步驟,設(shè)計好了算法,就可以將它用具體的語言進行描述,最終轉(zhuǎn)化解決問題的計算機程序。算法基本特征:
有窮性:一個算法應當包含有限的操作步驟,而不能是無限的可行性:通過已有的基本運算在有限次數(shù)內(nèi)完成算法操作。確定性:算法中的每一個步驟都應當是確定的。
I/O特性:有0個或多個輸入;一個或多個輸出。有效性:算法中每一個步驟都應當能有效的執(zhí)行,并得到確定的結(jié)果。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.1.2算法的描述方法
順序結(jié)構(gòu)使得語言按先后順序執(zhí)行;選擇結(jié)構(gòu)使程序能進行邏輯判斷,在滿足條件時轉(zhuǎn)去執(zhí)行相應的語句;循環(huán)結(jié)構(gòu)則使單調(diào)的重復運算變得簡單明了。因此,在結(jié)構(gòu)化程序設(shè)計中,順序、選擇和循環(huán)3種基本結(jié)構(gòu)能組成任何結(jié)構(gòu)的算法。算法的多種描述方法1.流程圖
流程圖又叫程序框圖,是一種用圖形來表示算法的描述方法。它通過指定的幾何框圖和流程線來描述各步驟的操作和執(zhí)行過程。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
順序結(jié)構(gòu)選擇結(jié)構(gòu)當循環(huán)型直到循環(huán)型#include"stdio.h"main(){inta,b,c;scanf("%d,%d",&a,&b);
if(a>b) c=a;
else c=b;printf("%d\n",c); }畫出程序流程圖:
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
N-S圖的名稱取自其提出者Nassi和Shneiderman兩個人名字的第一個字母。
(a)順序結(jié)構(gòu)(b)選擇結(jié)構(gòu)
(c)當循環(huán)型結(jié)構(gòu)(d)直到循環(huán)2.N-S圖
#include"stdio.h"main(){inta,b,c;scanf("%d,%d",&a,&b);
if(a>b) c=a;
else c=b;printf("%d\n",c); }畫出程序N-S圖:
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
選擇型If(P)AelseB當循環(huán)型while(條件){循環(huán)體}倒循環(huán)型do{循環(huán)體}while(條件)多分支選擇型switch(條件變量){變量取值1:分支1處理變量取值2:分支2處理
::
變量取值n:分支n處理}
3.偽代碼
偽代碼(pseudocode):介于自然語言與計算機語言之間的文字符號算法描述工具。順序型處理A處理B舉例:計算S=,寫出其算法
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.2順序結(jié)構(gòu)1.表達式語句
表達式語句由表達式加上分號“;”組成,其一般形式為:
表達式;a=3;x=y+z;i++;--i;
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.2順序結(jié)構(gòu)2.函數(shù)調(diào)用語句
函數(shù)調(diào)用語句由函數(shù)名、實際參數(shù)加上分號“;”組成,其一般形式為:函數(shù)名(實際參數(shù)表);printf("CProgram");c=max(a,b);
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
3.控制語句
C語言有九種控制語句,可分成以下三類:(1)條件判斷語句:if語句、switch語句;(2)循環(huán)執(zhí)行語句:dowhile語句、while語句、for語句;(3)轉(zhuǎn)向語句:break語句、continue語句.
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.復合語句
把多個語句用花括號{}括起來組成的一個語句塊稱復合語句,在程序中應把復合語句看成是單條語句,而不是多條語句。{x=y+z;a=b+c;printf(“%d%d”,x,a);}
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.復合語句
注意:①復合語句內(nèi)的各條語句都必須以分號“;”結(jié)尾,在右花括號“}”之后不能加分號。②一個復合語句在語法上視為一條語句,在一對花括號中的語句數(shù)量不限。
③在復合語句中,不僅可以有執(zhí)行語句,還可以有定義部分,定義部分應該出現(xiàn)在可執(zhí)行語句的前面。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.復合語句
【例4-3】復合語句中定義變量,并參與運算。#include"stdio.h"main(){intx;x=100;{ //復合語句開始intx=24;printf("x=%d\n",x);} //復合語句結(jié)束printf("x=%d\n",x);}
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
5.空語句
只有分號“;”組成的語句稱為空語句。空語句是什么也不執(zhí)行的語句。例如:while(getchar()!='\n');功能:只要從鍵盤輸入的字符不是回車則重新輸入。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
2.順序結(jié)構(gòu)順序結(jié)構(gòu)是在程序執(zhí)行中,各語句是按自上而下的順序執(zhí)行的,一個操作完成后接著執(zhí)行跟隨其后的下一個操作,無須作任何判斷。順序控制結(jié)構(gòu)的程序基本上由函數(shù)調(diào)用語句和表達式語句構(gòu)成。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.3.1if語句if語句(選擇分支語句)if語句的三種形式形式一:單分支格式:if(條件表達式)語句;執(zhí)行過程:條件語句非0=04.3選擇結(jié)構(gòu)例:if(x>y)printf(“%d”,x);if(a<b){t=a;a=b;b=t;}
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-6】輸入兩個實數(shù),按數(shù)值由小到大的順序輸出這兩個數(shù)。
#include<stdio.h>
voidmain()
{floata,b,t;
scanf(“%f,%f”,&a,&b);
if(a>b)
{t=a;
a=b;
b=t;}printf(“a=%5.2f,b=%5.2f\n”,a,b);}例【例4-7】輸入三個數(shù)a,b,c,要求按由小到大的順序輸出。Ifa>b將a和b對換Ifa>c將a和c對換Ifb>c將b和c對換
#include<stdio.h>
voidmain()
{
floata,b,c,t;
scanf(“%f,%f,%f”,&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf("三個數(shù)由小到大的順序為:%5.3f,%5.3f,%5.3f",a,b,c);}【例4-7】輸入三個數(shù)a,b,c,要求按由小到大的順序輸出。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.3.1if語句條件表達式語句1語句2非0=0形式二:雙分支格式:if(表達式)
語句1;else
語句2;執(zhí)行過程:例:if(x>y)max=x;elsemax=y;4.3選擇結(jié)構(gòu)
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
#include<stdio.h>
voidmain(){inta,b;printf("inputtwonumbers:");scanf("%d%d",&a,&b);if(a>b)printf("max=%d\n",a);
elseprintf("max=%d\n",b);}【例】輸入兩個整數(shù),輸出其中的大數(shù)。#include<stdio.h>voidmain(){inta;printf("\tinputanumber:");scanf("%d",&a);if(a%2==0)printf(“\n\t%d是偶數(shù)\n",a);elseprintf(“\n\t%d是奇數(shù)\n",a);}
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-8】輸入一個數(shù)a,判斷它是偶數(shù)還是奇數(shù)偶數(shù)是:a%2==0說明:1.兩種形式的if語句中在if后面都有表達式,且必須用括號括起來。表達式一般為邏輯表達式或者關(guān)系表達式,也可以是一個變量、常量或者是賦值表達式。2.If子句可以單獨成句,else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。3.在if和else后面只能含有一個內(nèi)嵌的分支語句,也可以有多個操作語句,此時用{}將幾個語句括起來成為一個復合語句。if(a>b){a++;b++;}else{a=0;b=10;}}if(a=b)printf(“%d”,a);elseprintf(“a=0”);if()if()語句1;
else語句2;elseif()語句3else語句4;4if語句嵌套在if語句中的某個分支語句又包含一個if語句結(jié)構(gòu):if()if()
語句1;else
語句2;if(){if()
語句1;}else
語句2;if
()if()語句1;else語句2;elseif()語句3else語句4;4if語句嵌套
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
if語句的嵌套結(jié)構(gòu)可以是下面的這些格式:【例4-14】輸入三個整數(shù),輸出其中的最大數(shù)和最小數(shù)。main(){inta,b,c,max,min;printf("inputthreenumbers:");scanf("%d%d%d",&a,&b,&c);if(a>b){max=a;min=b;}else{max=b;min=a;}if(max<c)max=c;elseif(min>c) min=c;printf("max=%d\nmin=%d\n",max,min);}例0(x=0),有一個函數(shù)y=1(x>0)編一程序,輸入一個x值,輸出y值。
-1(x<0)
算法1: 算法2: 輸入x 輸入x
若x<0,則y=-1 若x<0,則y=-1
若x=0,則y=0 否則: 若x>0,則y=1 若x=0,則y=0
輸出y 否則y=1
輸出y
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-15】x2+1(x>0)有一個函數(shù)y=0(x=0)編一程序,輸入一個x值,輸出y值
x(x<0)
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
#include<stdio.h>voidmain(){intx,y;scanf(“%d”,&x);{
程序段}printf(“x=%d,y=%d\n”,x,y);}其實現(xiàn)流程如下圖所示:
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
程序1:程序2:if(x<0) y=-1;if(x==0) y=0;if(x>0) y=1;
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
if(x<0) y=-1;else if(x==0) y=0; elsey=1;
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
條件運算符和條件表達式
條件運算符為?和:,它是一個三目運算符,即有三個參與運算的量。由條件運算符組成條件表達式的一般形式為:
表達式1?表達式2:表達式3使用條件表達式時,還應注意以下幾點:(1)條件運算符的運算優(yōu)先級低于關(guān)系運算符和算術(shù)運算符,但高于賦值運算符,因此,下面的語句:
max=(a>b)?a:b可以去掉括號而寫為
max=a>b?a:b(2)條件運算符?和:是一對運算符,不能分開單獨使用。(3)條件運算符的結(jié)合方向是自右至左。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-17】用條件表達式輸出兩個數(shù)中的大數(shù)。main(){inta,b;printf("\ninputtwonumbers:");scanf("%d%d",&a,&b);printf("max=%d",a>b?a:b);}
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
形式三:多分支格式:if(條件1)語句1;elseif(條件2)語句2;elseif(條件3)語句3;…...[else語句n;]條件1語句1非0=0條件2條件3語句n語句3語句2非0非0=0=0執(zhí)行過程:
例:if(salary>7000)index=0.1;elseif(salary>6000)index=0.05;elseif(salary>5000)index=0.02;elseif(salary>4000)index=0.01;elseindex=0;
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
#include"stdio.h"main(){charc;printf("inputacharacter:");c=getchar();
if(c<32)printf("Thisisacontrolcharacter\n");
elseif(c>='0'&&c<='9')printf("Thisisadigit\n");
elseif(c>='A'&&c<='Z')printf("Thisisacapitalletter\n");
elseif(c>='a'&&c<='z')printf("Thisisasmallletter\n");elseprintf("Thisisanothercharacter\n");}【例4-9】判斷輸入字符類型。例
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.3.2switch語句作用:亦稱多分支選擇語句,比用if語句實現(xiàn)多分支問題,其程序結(jié)構(gòu)清晰易讀一般形式:switch(表達式){caseE1:
語句組1;break;caseE2:
語句組2;
…….caseEn:
語句組n;break;[default:
語句組
;break;]}執(zhí)行過程:switch表達式語句組1語句組2語句組n語句組…...E1E2Endefaultcase提問:沒有break結(jié)果是什么?break;
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
有關(guān)case分支語句的說明:E1,E2,…En是常量表達式,且值必須互不相同case后可包含多個可執(zhí)行語句,且不必加{},若結(jié)束必須用break跳出多個case可共用一組執(zhí)行語句如:……case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;……..在使用switch語句時還應注意以下幾點:(1)switch語句中的表達式的值只能是整型、字符型或枚舉型。case分支的常量表達式的類型必須與switch語句中的表達式的類型一致。(2)各case和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。若default不是最后一條語句時,必須加上break。default子句可以省略不用。(3)若省略case語句塊中的break,則從滿足條件的case語句開始,順序逐個執(zhí)行以后的case語句,直到switch語句結(jié)束或遇到一條break語句為止。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-17】輸入一個數(shù)字,然后輸出該數(shù)字對應的星期的英文名稱。main(){inta;printf("inputintegernumber:");scanf("%d",&a);switch(a){case1:printf("Monday\n");break;case2:printf("Tuesday\n");break;case3:printf("Wednesday\n");break;case4:printf("Thursday\n");break;case5:printf("Friday\n");break;case6:printf("Saturday\n");break;case7:printf("Sunday\n");break;default:printf("error\n");}}例
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-18】成績等級查詢#include<stdio.h>main(){intn;printf("成績等級查詢\n\n");printf("請輸入成績:");scanf(〝%d〞,&n);switch((int)(n/10)){case10:printf("成績%d等級為優(yōu)秀\n",n);break;case9:printf("成績%d等級為優(yōu)秀\n",n);break;case8:printf("成績%d等級為良好\n",n);break;case7:printf("成績%d等級為及格\n",n);break;case6:printf("成績%d等級為及格\n",n);break;default:printf("成績%d等級為不及格\n",n);break;}}
例
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-19】計算器程序。用戶輸入運算數(shù)和四則運算符,輸出計算結(jié)果。#include<math.h>main(){floata,b;charc;printf("inputexpression:a+(-,*,/)b\n");scanf("%f%c%f",&a,&c,&b);switch(c){case'+':printf("%f\n",a+b);break;case'-':printf("%f\n",a-b);break;case'*':printf("%f\n",a*b);break;case'/':printf("%f\n",a/b);break;default:printf("inputerror\n");}}
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.4循環(huán)結(jié)構(gòu)C語言提供了3種循環(huán)語句:while語句do-while語句for語句。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.4.1while語句一般形式:while(循環(huán)條件)
循環(huán)體語句;執(zhí)行流程:條件循環(huán)體假(0)真(非0)特點:先判斷表達式,后執(zhí)行循環(huán)體
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-20】用while語句計算1+2+3+…+100。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
例(4-20)用while循環(huán)求
#include<stdio.h>main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}循環(huán)初值循環(huán)終值循環(huán)條件循環(huán)體循環(huán)變量增值#include<stdio.h>voidmain(){intk,t;k=1;t=1;while(k<=100){t*=k;k++;}printf("%d",t);}t=100!#include<stdio.h>voidmain(){intk,t,s;k=1;t=1;s=0;while(k<=100){t*=k;s+=t;k++;}printf("%d",s);}t=1!+2!+#include<stdio.h>voidmain(){intn=0;printf(“inputastring:\n”);while(getchar()!=‘\n’)n++;printf(“%d”,n);}【例4-21】統(tǒng)計從鍵盤輸入一行字符的個數(shù)。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
說明:循環(huán)體如果包含一個以上的語句,應該用花括號括起來,以復合語句形式出現(xiàn)。循環(huán)體有可能一次也不執(zhí)行。在循環(huán)體中應有使循環(huán)趨向結(jié)束的語句。While語句中的表達式一般是關(guān)系表達式或邏輯表達式,也可以式其他類型的表達式,只要表達式的值為真(非0)即可繼續(xù)循環(huán)。無限循環(huán):while(1)#include<stdio.h>voidmain(){inta=0,n;printf(“\ninputn:”);scanf("%d",&n);while(n--)printf(“%d”,a++*2);}【例4-22】while語句中表達式為自減類型的表達式。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.4.2do-while語句一般形式:do
循環(huán)體語句;
while(表達式);執(zhí)行流程:循環(huán)體expr假(0)真(非0)while
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
main(){inti,sum=0;i=1;do{sum=sum+i;i++;}while(i<=100);printf("%d\n",sum);}【例4-23】用do-while語句計算1+2+3+…+100。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
例:while和do-while比較main(){inti,sum=0;scanf("%d",&i);
do{sum+=i; i++;}while(i<=10);printf("%d",sum);}main(){inti,sum=0;scanf("%d",&i);
while(i<=10){sum+=i; i++;}printf("%d",sum);}while和do-while循環(huán)的比較凡是能用while循環(huán)處理,都能用do…while循環(huán)處理。do…while循環(huán)結(jié)構(gòu)可以轉(zhuǎn)換成while循環(huán)結(jié)構(gòu)。在一般情況下,用while語句和用do-while語句處理同一問題時,若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是如果while后面的表達式一開始就為假(0值)時,兩種循環(huán)的結(jié)果是不同的。for(表達式1;表達式2;表達式3)
語句;
首先執(zhí)行表達式1。如果表達式2的值為非0,就重復執(zhí)行語句和表達式3再判斷表達式2,直到表達式2的值為0時,跳出for語句結(jié)構(gòu)。語句;循環(huán)賦初值循環(huán)條件循環(huán)增量4.4.3for語句
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
執(zhí)行流程:表達式2循環(huán)體假(0)真(非0)表達式1表達式3
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
i=1;while(i<=100){sum=sum+i;i++;}for(i=1;i<=100;i++)sum=sum+i;
例用for循環(huán)求
說明:for語句和while語句可以互相轉(zhuǎn)換
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
說明:for語句可以轉(zhuǎn)換成while結(jié)構(gòu)表達式1;while(表達式2){
循環(huán)體語句;
表達式3;}for([表達式1;表達式2;表達式3;)
循環(huán)體語句;
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
(1)for循環(huán)中的“表達式1(循環(huán)變量賦初值)”、“表達式2(循環(huán)條件)”和“表達式3(循環(huán)變量增量)”都是選擇項,即可以缺省,但“;”不能缺省。
注意:(2)省略了“表達式1(循環(huán)變量賦初值)”,表示不對循環(huán)控制變量賦初值。如k=1;
for(;k<=3;k++)s=s+k;執(zhí)行時,跳過“求解表達式1”這一步,其他不變。但應在for前給循環(huán)變量賦初值。(3)省略了表達式2(循環(huán)條件),即不判斷循環(huán)條件,循環(huán)無終止地進行下去。也就是認為表達式2始終為真。如:
for(i=1;;i++)sum=sum+i;
它相當于:
i=1;while(1){sum=sum+1;i++;}
省略了“表達式2(循環(huán)條件)”,則不做其它處理時便成為死循環(huán)。需要在循環(huán)體中引進break語句,以退出循環(huán)。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
(4)省略了“表達式3(循環(huán)變量增量)”,則不對循環(huán)控制變量進行操作,這時可在語句體中加入修改循環(huán)控制變量的語句。如for(k=1;k<=3;){s=s+k;k++;}
在上面的for語句中只有表達式1和表達式2,而沒有表達式3。k++的操作不放在for語句的表達式3的位置處,而作為循環(huán)體的一部分,效果是一樣的,都能使循環(huán)正常結(jié)束。
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
(6)表達式2一般是關(guān)系表達式或邏輯表達式,但也可是數(shù)值表達式或字符表達式,只要其值非零,就執(zhí)行循環(huán)體。(5)同時省略了“表達式1和表達式3,只有表達式2。此時相當于while語句。
如k=1;k=1;
for(;k<=3;)while(k<=3){s=s+k;{s=s+k;k++;k++;}}
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
(7)表達式1和表達式3可以是一個簡單的表達式,也可以是逗號表達式,即包含一個以上的簡單表達式,中間用逗號間隔。如:
for(sum=0,i=1;i<=100;i++)
sum=sum+i;或
for(i=0,j=100;i<=j;i++,j--)k=i+j;如:
for(i=1;i<=100;i++,i++)sum=sum+i;相當于:
for(i=1;i<=100;i=i+2)sum=sum+i;
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-26】輸出菲波那切數(shù)列(Fibonacci數(shù)列)的前20項。
所謂菲波那切數(shù)列是指數(shù)列最初兩項的值為1,以后每一項為前兩項的和,即1,1,2,3,5,8,13,…。在程序中變量i1和i2表示數(shù)列的前兩項,用變量i3表示前兩項的和,然后換位即可。#include"stdio.h"main(){inti1=1,i2=1,i3,i;printf("\n%d%d",i1,i2);for(i=3;i<=20;i++){i3=i1+i2;printf("%d",i3);i1=i2;i2=i3;}}
例
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.4.4goto語句goto語句一般格式:
goto
標號;
….…..標號:語句;
程序流程轉(zhuǎn)向位置破壞了結(jié)構(gòu)化設(shè)計風格,容易帶來錯誤隱患
gotonext;intsum=0;/*被goto跳過*/
…next:
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
例用if和goto語句構(gòu)成循環(huán),求#include<stdio.h>main(){inti,sum=0;i=1;if(i<=100){sum+=i; i++;
}printf("%d",sum);}gotoloop;loop:
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
說明:標號只能出現(xiàn)在goto所在同一函數(shù)內(nèi),但可以不在一個循環(huán)層中,標號不重名標號只能加在可執(zhí)行語句前面限制使用goto語句
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
4.4.5循環(huán)的跳轉(zhuǎn)和嵌套break語句功能:在循環(huán)語句和switch語句中,終止并跳出循環(huán)體或switch語句一般形式:break;說明:break適用范圍:循環(huán)語句和switch語句中break只能終止并跳出當前層的循環(huán)結(jié)構(gòu)
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
expr……break;……假(0)真(非0)whiledo……break;…...expr假(0)真(非0)while
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
expr2……break;…...假(0)真(非0)forexpr1expr3switchexpr語句組1break;語句組2break;語句組nbreak;語句組break;…...const1const2constndefaultcase
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
break舉例:小寫字母轉(zhuǎn)換成大寫字母,直至輸入了非小寫字母字符#include<stdio.h>main(){charc;while(1){c=getchar(); if(c>='a'&&c<='z')putchar(c-32); elsebreak;}}例
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
continue語句功能:結(jié)束本次循環(huán),跳過尚未執(zhí)行的循環(huán)體語句,進行下一次循環(huán)條件的判斷僅用于循環(huán)語句中條件……continue;……假(0)真(非0)while真(非0)do……continue;…...條件假(0)while表達式2……continue;…...假(0)真(非0)for表達式1表達式3continue;
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
例求輸入的五個整數(shù)中正數(shù)的個數(shù)及其平均值#include<stdio.h>main(){inti,num=0,a;floatsum=0;for(i=0;i<5;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf(“%d個正數(shù)的和為:%6.0f\n",num,sum);printf(“平均值為:%6.2f\n",sum/num);}例
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
[例4-31]已知sum=1+2+3+…+i+…,求sum大于20時,i的最小值。#include"stdio.h"main(){inti=1,sum=0;while(i<10){sum+=i++;//sum=1+2+3+…if(sum>20)break;//當sum的值大于20時,退出循環(huán)*/}printf("%d",i);}例
C語言程序設(shè)計
第四章程序控制結(jié)構(gòu)
【例4-32】100~200之間的不能被3整除的數(shù)輸出。
#include"stdio.h"main(){intn;for(n=100;n<=200;n++){if(n%3==0)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地質(zhì)調(diào)查員安全防護考核試卷含答案
- 鋰鹽田工安全文化能力考核試卷含答案
- 鋼琴共鳴盤制作工崗前溝通協(xié)調(diào)考核試卷含答案
- 電動工具定轉(zhuǎn)子制造工崗前技術(shù)水平考核試卷含答案
- 環(huán)境地質(zhì)調(diào)查員安全素養(yǎng)模擬考核試卷含答案
- 藥物制劑工操作能力模擬考核試卷含答案
- 2025年云南現(xiàn)代職業(yè)技術(shù)學院單招(計算機)測試備考題庫附答案
- 2024年阜陽幼兒師范高等專科學校輔導員招聘考試真題匯編附答案
- 2024年那坡縣選聘縣直事業(yè)單位工作人員真題匯編附答案
- 2024年重慶工信職業(yè)學院輔導員招聘備考題庫附答案
- 醫(yī)療衛(wèi)生機構(gòu)6S常態(tài)化管理打分表
- 幾種常用潛流人工濕地剖面圖
- vpap iv st說明總體操作界面
- 2023人事年度工作計劃七篇
- LY/T 1692-2007轉(zhuǎn)基因森林植物及其產(chǎn)品安全性評價技術(shù)規(guī)程
- GB/T 20145-2006燈和燈系統(tǒng)的光生物安全性
- 長興中學提前招生試卷
- 安全事故案例-圖片課件
- 螺紋的基礎(chǔ)知識
- 蜂窩煤成型機課程設(shè)計說明書
- 生物統(tǒng)計學(課堂PPT)
評論
0/150
提交評論