《C語言程序設(shè)計d》課件-第三講 程序流程控制_第1頁
《C語言程序設(shè)計d》課件-第三講 程序流程控制_第2頁
《C語言程序設(shè)計d》課件-第三講 程序流程控制_第3頁
《C語言程序設(shè)計d》課件-第三講 程序流程控制_第4頁
《C語言程序設(shè)計d》課件-第三講 程序流程控制_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

西安電子科技大學(xué)計算機學(xué)院1引言例1:寫程序計算ax2+bx+c=0的兩個實根,如果兩個實根相同只輸出一個,如果不存在實根輸出"norealroot"根的判別式為b2-4ac,有三種可能b2-4ac小于0,無實根b2-4ac等于0,兩個相同實根b2-4ac大于0,兩個不同實根如何根據(jù)b2-4ac的值(條件)來選擇輸出?西安電子科技大學(xué)計算機學(xué)院2引言例2:計算n的變化初始為1,結(jié)束為100(條件),每次遞增1重復(fù)做100次或更多次相同的事情如何解決?初始條件結(jié)束條件條件修改西安電子科技大學(xué)計算機學(xué)院3主要內(nèi)容如何表示條件關(guān)系表達式邏輯表達式流程控制條件語句循環(huán)語句3.1如何表示條件條件是什么?例如:b2-4ac<0條件是否成立如何判斷?西安電子科技大學(xué)計算機學(xué)院5關(guān)系表達式兩個數(shù)據(jù)之間的關(guān)系(條件)通常由關(guān)系運算符和數(shù)據(jù)構(gòu)成的表達式來確定關(guān)系運算符含義示例<小于x<0>大于x>1<=小于等于x<=5>=大于等于y>=2==等于y==0!=不等于y!=0西安電子科技大學(xué)計算機學(xué)院6關(guān)系表達式關(guān)系表達式的結(jié)果是一個邏輯值,其值取決于關(guān)系是否成立關(guān)系成立,表達式結(jié)果為邏輯“真”(true)關(guān)系不成立,表達式結(jié)果為邏輯“假”(false)C語言沒有專門的邏輯值類型,用數(shù)值1表示邏輯“真”,數(shù)值0表示邏輯“假”任何基本類型均可當(dāng)作邏輯值使用,非0表示邏輯“真”,0表示邏輯“假”西安電子科技大學(xué)計算機學(xué)院7關(guān)系表達式示例xpoweryitemMIN_ITEMgendernum-5102471.5-999.0'M'999運算符關(guān)系表達式含義表達式的值<=x<=0x小于或等于0<power<1024power小于1024>=x>=yx大于或等于y>item>MIN_ITEMitem大于MIN_ITEM==gender=='M'gender等于'M'10011西安電子科技大學(xué)計算機學(xué)院8條件表達式C語言中唯一的三元運算符表達式1?

表達式2:

表達式3首先計算表達式1的值;如果這個表達式的值非0(即,條件成立),那么接著計算表達式2,并用它的值作為整個條件表達式的值;如果條件不成立(表達式1的值是0),就計算表達式3,并用它的值作為整個條件表達式的值。特別注意:在表達式1非0時不計算表達式3;在表達式1值為0時不計算表達式2。9條件表達式示例(condition.c)//示例1:求兩個整數(shù)的較大值或較小值的方法inta=4,b=6,max,min;max=a>b?a:b;min=a<b?a:b;printf(“max=%d,min=%d\n”,max,min);//示例2:在表達式1的值非0時不計算表達式3;//在表達式1的值為0時不計算表達式2inta=4,b=6,c;c=a>3?(a=a+1):(b=b+1);printf(“a=%d,b=%d,b=%d\n",a,b,c);西安電子科技大學(xué)計算機學(xué)院10邏輯表達式用邏輯運算符連接多個關(guān)系表達式,用于描述多個關(guān)系的復(fù)雜組合例1:判斷x是否在區(qū)間[3,5)之內(nèi)即x大于等于3,并且x小于5例2:判斷某年是否是閏年:年份能夠被400整除或者年份能夠被4整除并且不能被100整除例3:判斷x不在區(qū)間[3,5)之內(nèi)例1的條件取反西安電子科技大學(xué)計算機學(xué)院11邏輯運算符C語言的3種邏輯運算符邏輯運算符含義示例&&并且x>=3&&x<5||或者x<3||x>=5!非!(x>=3&&x<5)西安電子科技大學(xué)計算機學(xué)院12邏輯表達式邏輯與(表達式1&&

表達式2)只有兩個表達式都非0時結(jié)果為1,否則為0操作數(shù)1操作數(shù)2操作數(shù)1&&

操作數(shù)2非零(true)非零(true)1(true)非零(true)0(false)0(false)0(false)非零(true)0(false)0(false)0(false)0(false)計算方式:先求表達式1;若得到0則不計算表達式2,以0作為整個表達式的結(jié)果;否則(表達式1的值非0)就計算表達式2,如果表達式2值為0則整個表達式結(jié)果為0,否則結(jié)果為1

西安電子科技大學(xué)計算機學(xué)院13邏輯表達式邏輯或(表達式1||

表達式2)兩個表達式的值都為0時結(jié)果為0,否則為1操作數(shù)1操作數(shù)2操作數(shù)1||操作數(shù)2非零(true)非零(true)1(true)非零(true)0(false)1(true)0(false)非零(true)1(true)0(false)0(false)0(false)計算方式:先求表達式1;若得到非0則不計算表達式2,以1作為整個表達式的結(jié)果;否則(當(dāng)表達式1值為0時)計算表達式2,如果它為0則整個表達式結(jié)果為0,否則結(jié)果為1。西安電子科技大學(xué)計算機學(xué)院14邏輯表達式邏輯非(!

表達式)把表達式的值看作邏輯值,以該值的否定作為結(jié)果操作數(shù)1!操作數(shù)1非零(true)0(false)0(false)1(true)計算方式:如果表達式的值非0,則結(jié)果為0;如果表達式值是0則結(jié)果為1。西安電子科技大學(xué)計算機學(xué)院15運算符優(yōu)先級運算符優(yōu)先級函數(shù)調(diào)用

!+-&(一元運算符)*/%+-<<=>=>==!=&&||=(賦值運算符)低高西安電子科技大學(xué)計算機學(xué)院16邏輯表達式示例例1:判斷x是否在區(qū)間[3,5)之內(nèi)(range.c)即x大于等于3,并且x小于5x>=3&&x<53<=x<5是否正確?這是數(shù)學(xué)表示方式,在C語言中得不到想要的結(jié)果西安電子科技大學(xué)計算機學(xué)院17邏輯表達式示例例2:判斷x是否在區(qū)間[3,5)之外即x小于3,或者x大于等于5x<3||x>=5!(x>=3&&x<5)或者xx<3||x>=5!(x>=3&&x<5)40(false)0(false)21(true)1(true)61(true)1(true)西安電子科技大學(xué)計算機學(xué)院18邏輯表達式示例例3:判斷year表示的年份是不是閏年年份能夠被400整除,或者年份能夠被4整除并且不能被100整除year%400==0||(year%4==0&&year%100!=0)西安電子科技大學(xué)計算機學(xué)院19邏輯表達式示例例4:判斷字符ch是不是小寫字母,大寫字母,數(shù)字小寫字母是'a'~'z'之間的所有字符大寫字母是'A'~'Z'之間的所有字符數(shù)字字符是'0'~‘9’之間的所有字符ch>='a'&&ch<='z'ch>='0'&&ch<='9'ch>='A'&&ch<='Z'ch是小寫字母ch是大寫字母ch是數(shù)字西安電子科技大學(xué)計算機學(xué)院203.2程序流程控制西安電子科技大學(xué)計算機學(xué)院21三種基本控制結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)復(fù)雜控制結(jié)構(gòu)控制結(jié)構(gòu)可以嵌套,以構(gòu)成更復(fù)雜的控制結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計基礎(chǔ)西安電子科技大學(xué)計算機學(xué)院22順序結(jié)構(gòu)由一組順序執(zhí)行的處理塊組成,每個處理塊可能包含一條或一組語句,完成一項任務(wù)順序結(jié)構(gòu)是最基本的算法結(jié)構(gòu)順序結(jié)構(gòu)西安電子科技大學(xué)計算機學(xué)院23分支結(jié)構(gòu)(選擇結(jié)構(gòu))的含義根據(jù)某一條件的判斷結(jié)果,確定程序的流程,即選擇哪一個程序分支中的處理塊去執(zhí)行最基本的分支結(jié)構(gòu)是二路分支結(jié)構(gòu)以條件判斷為起點,如果判斷結(jié)果為真,則執(zhí)行A處理塊的操作,否則執(zhí)行B處理塊的操作分支結(jié)構(gòu)西安電子科技大學(xué)計算機學(xué)院24循環(huán)結(jié)構(gòu)的含義根據(jù)某一條件的判斷結(jié)果,反復(fù)執(zhí)行某一處理塊的過程進入循環(huán)結(jié)構(gòu),判斷循環(huán)條件,如果循環(huán)條件的結(jié)果為真,則執(zhí)行A處理塊的操作,即循環(huán)一次,然后再次判斷循環(huán)條件,當(dāng)循環(huán)條件為假時,循環(huán)結(jié)束循環(huán)結(jié)構(gòu)西安電子科技大學(xué)計算機學(xué)院25三種基本流程控制模式語句塊A語句塊B語句塊A語句塊A條件真假順序執(zhí)行模式選擇執(zhí)行模式重復(fù)執(zhí)行模式三種模式都只有一個起點和一個終點,因此可以當(dāng)作一個整體結(jié)構(gòu)嵌入到其他流程模式中條件語句塊A真假西安電子科技大學(xué)計算機學(xué)院26在程序中,常常需要根據(jù)不同的情況來從一組語句中選擇一個來執(zhí)行,這是通過選擇語句來完成的。選擇語句包括:if語句switch語句選擇語句西安電子科技大學(xué)計算機學(xué)院27if語句的三種格式if語句//第一種格式if(

條件

){

條件成立時執(zhí)行的操作}

…//無論條件是否成立均執(zhí)行//例if(count==0

){printf("\n");}西安電子科技大學(xué)計算機學(xué)院28if語句的三種格式if語句//第二種格式if(

條件

){

條件成立時執(zhí)行的操作}else{

條件不成立時執(zhí)行的操作}

…//無論條件是否成立均執(zhí)行//例

if(x>y

)max=x;

elsemax=y;

西安電子科技大學(xué)計算機學(xué)院29if語句的三種格式if語句//第三種格式if

(條件1){//條件1成立}elseif(條件2){//條件1不成立且條件2成立}elseif(條件3){//條件1不成立且條件2不成

//立且條件3成立}else{//條件1,2,3均不成立}西安電子科技大學(xué)計算機學(xué)院30if語句當(dāng)操作只有一條語句時,if和else后的大括號可以不要if和else對應(yīng)的操作應(yīng)該縮進,便于代碼理解當(dāng)操作有多條語句時,用大括號把語句包圍起來形成復(fù)合結(jié)構(gòu)使用if語句應(yīng)注意:西安電子科技大學(xué)計算機學(xué)院31復(fù)合結(jié)構(gòu)多個語句由一對大括號包圍起來構(gòu)成復(fù)合結(jié)構(gòu)intmain(){

doubles=123.5;printf("s=%f!\n",s);return0;}intmain(){inta,abs;scanf(“%d”,&a);abs=a;if(a<0){abs=-a;}}西安電子科技大學(xué)計算機學(xué)院32編寫程序,接受用戶輸入的整數(shù),如果該整數(shù)為奇數(shù)則將其乘3加1后輸出,偶數(shù)直接輸出。簡單if語句#include<stdio.h>intmain(){inta,result;

/*輸入部分*/printf("Theprogramgetsanumber.\nIfitisaneven,outputitdirectly,\n");printf("otherwisemultiplyitby3thenplus1.\n");printf("Thenumber:");scanf("%d",&a);

/*計算部分*/result=a;if(a%2==1)result=a*3+1;

/*輸出部分*/printf("Theresultis%d.\n",result);return0;}西安電子科技大學(xué)計算機學(xué)院33編寫程序,接受用戶輸入的整數(shù),如果該整數(shù)為奇數(shù)則將其乘3加1后輸出,偶數(shù)除以2后輸出if-else語句#include<stdio.h>intmain(){inta,result;

/*輸入部分*/printf("Theprogramgetsanumber.\nIfitisaneven,divideitby2,\n");printf("otherwisemultiplyitby3thenplus1.\n");printf("Thenumber:");scanf("%d",&a);

/*計算部分*/if(a%2==1) result=a*3+1;elseresult=a/2;

/*輸出部分*/printf("Theresultis%d.\n",result);return0;}西安電子科技大學(xué)計算機學(xué)院34if-else語句從鍵盤輸入三個整數(shù),計算其中的最大值并將其輸出。#include<stdio.h>intmain(){inta,b,c,max;

/*輸入部分*/printf(“該程序從鍵盤獲取3個整數(shù),輸出最大值。\n");printf(“請輸入3個數(shù):\n");scanf("%d%d%d",&a,&b,&c);

/*計算部分*/

if(a>b)max=a;elsemax=b;if(c>max)max=c;/*輸出部分*/printf(“最大值為:%d.\n",max);return0;}西安電子科技大學(xué)計算機學(xué)院35從鍵盤輸入一個三角形的三條邊,判斷其為何種三角形。if-elseif-else語句#include<stdio.h>intmain(){ inta,b,c; scanf("%d%d%d",&a,&b,&c); if(a+b<=c||b+c<=a||c+a<=b) printf("不是三角形"); elseif(a==b&&b==c) printf("等邊三角形"); elseif(a==b||b==c||c==a) printf("等腰三角形"); elseif(a*a+b*b==c*c||b*b+c*c==a*a||c*c+a*a==b*b) printf("直角三角形(非等腰)"); else printf("其它三角形"); printf("\n");

return0;}西安電子科技大學(xué)計算機學(xué)院36If語句的嵌套一般形式

if() if()語句1 else語句2 else if()語句3 else語句4

注意:

語句1、2、3、4可以是復(fù)合語句,每層的if與else配對,或用{}來確定層次關(guān)系。西安電子科技大學(xué)計算機學(xué)院37else與哪個if配對?if(service_years<5) if(age>=28) salary_level+=1;else salary_level+=2;else與if配對規(guī)則 --else部分屬于前面最近的無對應(yīng)else的if語句。if(service_years<5){if(age>=28)salary_level+=1;}elsesalary_level+=2;降低第二個if的層次,使else與第一個if配對if語句的歧義西安電子科技大學(xué)計算機學(xué)院38計算過程先計算整型表達式的值依次與常數(shù)表達式比較若相同則執(zhí)行該分支(子句)否則轉(zhuǎn)向default分支最后退出switch語句特別說明switch后面的表達式必須為整型、字符型case后面必須為常量表達式,且各個case值必須不同case分支中的語句可以有多條,不需要花括號switch(整型表達式){case整型常量表達式1:語句序列1case整型常量表達式2:語句序列2┇case整型常量表達式n:語句序列ndefault:默認語句序列}switch分支結(jié)構(gòu)西安電子科技大學(xué)計算機學(xué)院39switch語句的執(zhí)行流程西安電子科技大學(xué)計算機學(xué)院40從鍵盤輸入一個星期的某一天(0:星期天;1:星期一;...),然后輸出其對應(yīng)的英語單詞。switch示例#include<stdio.h>intmain(){ intday; scanf(“%d”,&day); switch(day) { case0:printf("Sunday");break; case1:printf(

"Monday");break; case2:printf("Tuesday");break; case3:printf(

"Wednesday");break; case4:printf("Thursday");break; case5:printf("Friday");break; case6:printf("Saturday");break; default:printf("Inputerror"); } printf(“\n”); return0;}西安電子科技大學(xué)計算機學(xué)院41break語句的目的終止switch語句的執(zhí)行如果沒有break語句,則程序會從指定的case分支開始,并在該分支結(jié)束后繼續(xù)執(zhí)行下去除非switch語句結(jié)束,后面的其他case分支或default分支中的語句都會得到執(zhí)行break語句西安電子科技大學(xué)計算機學(xué)院42選擇語句練習(xí)練習(xí)1(root.cpp):寫程序計算ax2+bx+c=0的兩個實根,如果兩個實根相同只輸出一個,如果不存在實根輸出"norealroot"練習(xí)2(swap.cpp):任意給定兩個整數(shù)x和y,要求用x存儲較小的數(shù),y存儲較大的數(shù),然后輸出。練習(xí)3(fee.cpp):階梯電價計費,電價分三個檔次,0~110度電,每度電0.5元;111~210度電,超出110部分每度電0.55元,超過210度電,超出210部分每度電0.70元,給出一個家庭一月用電量,請計算出應(yīng)繳的電費。西安電子科技大學(xué)計算機學(xué)院43選擇語句練習(xí)練習(xí)4(grade.cpp):某一門課的成績用'A','B','C','D','F'來表示,成績?yōu)?A','B','C','D'表示通過,所得學(xué)分分別為4,3,2,1,成績?yōu)?F'表示未通過,所得學(xué)分為0。給出某個同學(xué)的成績請判斷是否通過,及獲得的學(xué)分。練習(xí)5(computDays.cpp):給定年和月,求出該月天數(shù),例如2012年10月為31天。西安電子科技大學(xué)計算機學(xué)院44選擇語句練習(xí)練習(xí)6(bonus.cpp):企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤I低于或等于100000元的,獎金可提成10%;100000元<I≤200000元時,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;200000元<I≤400000元時,低于200000元的部分按上述辦法提成(下同),高于200000元的部分,可提成5%;400000元<I≤600000元時,高于400000元的部分,可提成3%;600000元<I≤1000000元時,高于600000元的部分,可提成1.5%;I>1000000元時,超過1000000元的部分按1%提成。從鍵盤輸入當(dāng)月利潤I,求應(yīng)發(fā)獎金總數(shù)。西安電子科技大學(xué)計算機學(xué)院45循環(huán)是根據(jù)某個條件的滿足與否來決定是否重復(fù)執(zhí)行一組語句。C語言提供了兩種實現(xiàn)重復(fù)操作的循環(huán)語句:while語句for語句這兩種循環(huán)語句在表達能力上是等價的,在解決某個具體問題時,用其中的一種可能會比另一種更加自然。循環(huán)語句西安電子科技大學(xué)計算機學(xué)院46while循環(huán)格式:while(表達式)循環(huán)體while循環(huán)執(zhí)行流程先判斷后執(zhí)行:表達式為真時,執(zhí)行一遍循環(huán)體(一次迭代),返回重新計算表達式的值以確定是否重復(fù)執(zhí)行循環(huán)體;若表達式為假,則終止循環(huán)為保證循環(huán)終止,循環(huán)體內(nèi)應(yīng)有能改變條件表達式值的語句while循環(huán)結(jié)構(gòu)47遞增和遞減運算符用于變量的遞增(加1)和遞減(減1)操作遞增運算符為“++”,遞減運算符為“--”遞增和遞減運算符可以出現(xiàn)在變量的前面或后面,但不能出現(xiàn)在表達式或常數(shù)的前面或后面遞增和遞減運算符經(jīng)常用在循環(huán)中改變條件x=x+1x++++xx=x-1x----xdoublesum=0;intn=1;while(n<=100){sum=sum+1.0/n;

n++;//n=n+1} 西安電子科技大學(xué)計算機學(xué)院48遞增和遞減運算符遞增和遞減運算符出現(xiàn)在表達式中帶來的問題inty=1,z;z=y++;//z=?,y=?inty=1,z;z=++y;//z=?,y=?先取y的值參與計算,再遞增y的值inty=1,z;z=y;y++;//z=?,y=?先遞增y的值,再取y的值參與計算inty=1,z;++y;z=y;//z=?,y=?49復(fù)合賦值運算符x+=5等價于x=x+5x-=5等價于x=x-5x*=5等價于x=x*5x/=5等價于x=x/5x%=5等價于x=x%5西安電子科技大學(xué)計算機學(xué)院50while循環(huán)示例編寫程序,接受用戶輸入的整數(shù)n,計算1+2+…+n。#include<stdio.h>intmain(){ intn,m,s; printf("請輸入整數(shù)n:\n"); scanf("%d",&n);

m=1;s=0;

//循環(huán)初始化 while(m<=n)

//循環(huán)條件 { s+=m;

m++;

//循環(huán)參數(shù)調(diào)整 } printf(“s=%d\n",s); return0;}循環(huán)結(jié)構(gòu)由四部分組成:循環(huán)初始化、循環(huán)條件、循環(huán)體、循環(huán)參數(shù)調(diào)整西安電子科技大學(xué)計算機學(xué)院51while循環(huán)示例編寫程序,接受用戶輸入的整數(shù)n,求n!。#include<stdio.h>intmain(){ intn,i,f; printf("請輸入整數(shù)n:\n"); scanf("%d",&n);

i=2;f=1;

//循環(huán)初始化 while(i<=n)

//循環(huán)條件 { f*=i; i++;

//循環(huán)參數(shù)調(diào)整 } printf("%d的階乘為:%d\n",n,f); return0;}循環(huán)結(jié)構(gòu)由四部分組成:循環(huán)初始化、循環(huán)條件、循環(huán)體、循環(huán)參數(shù)調(diào)整西安電子科技大學(xué)計算機學(xué)院52for循環(huán)格式for(初始化表達式;條件表達式;改變條件的表達式) 循環(huán)體for循環(huán)執(zhí)行流程先判斷后執(zhí)行:先執(zhí)行初始化表達式,再計算條件表達式,并根據(jù)其結(jié)果決定是否執(zhí)行一遍循環(huán)體(為真時執(zhí)行),計算改變條件的表達式值,返回重新計算條件表達式的值以確定循環(huán)是否終止for語句循環(huán)初始化循環(huán)條件循環(huán)參數(shù)調(diào)整西安電子科技大學(xué)計算機學(xué)院53逗號運算符通常在for循環(huán)的初始化表達式中使用用來連接兩個表達式,例如:表達式1,

表達式2計算形式:先計算表達式1,再計算表達式2西安電子科技大學(xué)計算機學(xué)院54for循環(huán)示例編寫程序,接受用戶輸入的整數(shù)n,求n!。#include<stdio.h>intmain(){ intn,i,f; printf("請輸入整數(shù)n:\n"); scanf("%d",&n);

for(i=2,f=1;i<=n;i++)

f*=i;

printf("%d的階乘為:%d\n",n,f); return0;}循環(huán)初始化循環(huán)條件循環(huán)參數(shù)調(diào)整循環(huán)體1.只執(zhí)行一次2.可以為空西安電子科技大學(xué)計算機學(xué)院55編寫程序,接受用戶輸入的整數(shù)n,求1~n的平方和#include<stdio.h>

intmain()

{

intn,i,sum=0;printf("Theprogramgetsapositiveinteger,\n");printf("andprintsthesquaredsumfrom1tothenumber.\n");printf("Thenumber:");

scanf("%d",&n);for(i=0;i<=n;++i)sum+=i*i;printf("Thesumis%d.\n",sum);return0;}for循環(huán)示例西安電子科技大學(xué)計算機學(xué)院56循環(huán)語句——for循環(huán)使用for循環(huán)的注意事項三個表達式都可以沒有,但分號必須有條件表達式?jīng)]有,表示循環(huán)一直執(zhí)行永不結(jié)束當(dāng)循環(huán)體只有一條語句時可以不寫大括號,但為了避免邏輯錯誤,無論有多少條語句都加上大括號西安電子科技大學(xué)計算機學(xué)院57for循環(huán)和while循環(huán)相互轉(zhuǎn)換for(初始化表達式;

條件表達式;改變條件的表達式){

循環(huán)體}初始化表達式;while(

條件表達式)

{循環(huán)體改變條件的表達式;}西安電子科技大學(xué)計算機學(xué)院58循環(huán)可分為兩類:計數(shù)控制的循環(huán):重復(fù)執(zhí)行循環(huán)體直到指定的次數(shù)事件控制的循環(huán):循環(huán)前不知道循環(huán)次數(shù),循環(huán)終止條件為循環(huán)執(zhí)行結(jié)果觸發(fā)到循環(huán)條件兩種循環(huán)結(jié)構(gòu)可以互換使用如果循環(huán)前能確定循環(huán)的次數(shù),則用for語句;否則,使用while語句;for循環(huán)將所有循環(huán)控制因素都放在循環(huán)頭部,循環(huán)結(jié)構(gòu)最清晰,使用頻率也最高。for與while的比較西安電子科技大學(xué)計算機學(xué)院59例:輸入10個數(shù),計算它們的和。#include<stdio.h>intmain(){ doublex,sum=0;inti; printf("請輸入10個數(shù):"); for(i=0;i<10;i++) { scanf("%lf",&x); sum+=x; } printf("sum=%lf\n",sum); return0;}for循環(huán)舉例西安電子科技大學(xué)計算機學(xué)院60while循環(huán)舉例例:求數(shù)列

1/2、3/4、5/8、7/16、9/32……

的所有大于等于0.000001的數(shù)據(jù)項之和,輸出計算結(jié)果。分析:序號分子分母12×1-1=121=222×2-1=322=432×3-1=523=8………………i2×i-1=2i-12i=2iai=(2i-1)/2i西安電子科技大學(xué)計算機學(xué)院61#include<stdio.h>#include<math.h>intmain(){ inti=1; doublesum=0.0,si;

while((si=(i+i-1)/pow(2,i))>=0.000001) { sum+=si; i++; } printf("sum=%lf\n",sum); return0;}西安電子科技大學(xué)計算機學(xué)院62循環(huán)結(jié)構(gòu)的特殊控制

——break和continue的使用語句功能break:強制退出循環(huán),循環(huán)體中跟在break語句后面的語句將不再執(zhí)行。continue:提前結(jié)束本輪循環(huán)體的執(zhí)行,準備進入下一次循環(huán)。循環(huán)條件循環(huán)體truefalsebreakcontinue西安電子科技大學(xué)計算機學(xué)院63編寫程序,接受用戶輸入的多個整數(shù)求和。用戶輸入0時輸入結(jié)束/*輸入與計算部分*/

printf("Theprogramgetssomeintegers,andoutputtheirsum.\n");

printf("Tostop,pleaseinput0.\n");

while(1){

printf("Pleaseinputaninteger:");

scanf("%d",&n);if(n==0)break;

sum+=n;

}使用break語句終止循環(huán)西安電子科技大學(xué)計算機學(xué)院64編寫程序,接受用戶輸入的多個整數(shù)求和。注意,僅累加正整數(shù),跳過所有負數(shù),用戶輸入0時程序結(jié)束#include<stdio.h>

intmain()

{

intn,sum=0;/*count為輸入整數(shù)的個數(shù)*//*輸入與計算部分*/

printf("Theprogramgetssomeintegers,andoutputthesumofallpositivenumbers.\n");

printf("Tostop,pleaseinput0.\n");

while(1){

scanf("%d",&n);if(n==0)break;/*終止循環(huán)*/if(n<0)continue;/*僅終止循環(huán)的當(dāng)前迭代,不累加負數(shù)值*/

sum+=n;

}/*輸出部分*/

printf("Thesumis%d.\n",sum);

return0;

}continue語句西安電子科技大學(xué)計算機學(xué)院65循環(huán)結(jié)構(gòu)的嵌套例:顯示輸出如下所示的三角形(for語句嵌套)************************************西安電子科技大學(xué)計算機學(xué)院66循環(huán)結(jié)構(gòu)的嵌套

分析:行號空格數(shù)*數(shù) *051 ***143 *****235*******327*********419***********5011西安電子科技大學(xué)計算機學(xué)院67#include<stdio.h>intmain(){ inti,j; for(i=0;i<6;i++) { printf("\n"

); for(j=0;j<5-i;j++)printf(""

); for(j=0;j<i+i+1;j++)printf("*"

); } return0;}程序代碼西安電子科技大學(xué)計算機學(xué)院68例:編程求出小于n的所有素數(shù)(質(zhì)數(shù))#include<stdio.h>intmain(){ intn,count=0;inti,j; printf("請輸入一個正整數(shù):"); scanf("%d",&n);//從鍵盤輸

溫馨提示

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

評論

0/150

提交評論