版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
西安電子科技大學(xué)計(jì)算機(jī)學(xué)院1引言例1:寫程序計(jì)算ax2+bx+c=0的兩個(gè)實(shí)根,如果兩個(gè)實(shí)根相同只輸出一個(gè),如果不存在實(shí)根輸出"norealroot"根的判別式為b2-4ac,有三種可能b2-4ac小于0,無實(shí)根b2-4ac等于0,兩個(gè)相同實(shí)根b2-4ac大于0,兩個(gè)不同實(shí)根如何根據(jù)b2-4ac的值(條件)來選擇輸出?西安電子科技大學(xué)計(jì)算機(jī)學(xué)院2引言例2:計(jì)算n的變化初始為1,結(jié)束為100(條件),每次遞增1重復(fù)做100次或更多次相同的事情如何解決?初始條件結(jié)束條件條件修改西安電子科技大學(xué)計(jì)算機(jī)學(xué)院3主要內(nèi)容如何表示條件關(guān)系表達(dá)式邏輯表達(dá)式流程控制條件語句循環(huán)語句3.1如何表示條件條件是什么?例如:b2-4ac<0條件是否成立如何判斷?西安電子科技大學(xué)計(jì)算機(jī)學(xué)院5關(guān)系表達(dá)式兩個(gè)數(shù)據(jù)之間的關(guān)系(條件)通常由關(guān)系運(yùn)算符和數(shù)據(jù)構(gòu)成的表達(dá)式來確定關(guān)系運(yùn)算符含義示例<小于x<0>大于x>1<=小于等于x<=5>=大于等于y>=2==等于y==0!=不等于y!=0西安電子科技大學(xué)計(jì)算機(jī)學(xué)院6關(guān)系表達(dá)式關(guān)系表達(dá)式的結(jié)果是一個(gè)邏輯值,其值取決于關(guān)系是否成立關(guān)系成立,表達(dá)式結(jié)果為邏輯“真”(true)關(guān)系不成立,表達(dá)式結(jié)果為邏輯“假”(false)C語言沒有專門的邏輯值類型,用數(shù)值1表示邏輯“真”,數(shù)值0表示邏輯“假”任何基本類型均可當(dāng)作邏輯值使用,非0表示邏輯“真”,0表示邏輯“假”西安電子科技大學(xué)計(jì)算機(jī)學(xué)院7關(guān)系表達(dá)式示例xpoweryitemMIN_ITEMgendernum-5102471.5-999.0'M'999運(yùn)算符關(guān)系表達(dá)式含義表達(dá)式的值<=x<=0x小于或等于0<power<1024power小于1024>=x>=yx大于或等于y>item>MIN_ITEMitem大于MIN_ITEM==gender=='M'gender等于'M'10011西安電子科技大學(xué)計(jì)算機(jī)學(xué)院8條件表達(dá)式C語言中唯一的三元運(yùn)算符表達(dá)式1?
表達(dá)式2:
表達(dá)式3首先計(jì)算表達(dá)式1的值;如果這個(gè)表達(dá)式的值非0(即,條件成立),那么接著計(jì)算表達(dá)式2,并用它的值作為整個(gè)條件表達(dá)式的值;如果條件不成立(表達(dá)式1的值是0),就計(jì)算表達(dá)式3,并用它的值作為整個(gè)條件表達(dá)式的值。特別注意:在表達(dá)式1非0時(shí)不計(jì)算表達(dá)式3;在表達(dá)式1值為0時(shí)不計(jì)算表達(dá)式2。9條件表達(dá)式示例(condition.c)//示例1:求兩個(gè)整數(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:在表達(dá)式1的值非0時(shí)不計(jì)算表達(dá)式3;//在表達(dá)式1的值為0時(shí)不計(jì)算表達(dá)式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é)計(jì)算機(jī)學(xué)院10邏輯表達(dá)式用邏輯運(yùn)算符連接多個(gè)關(guān)系表達(dá)式,用于描述多個(gè)關(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é)計(jì)算機(jī)學(xué)院11邏輯運(yùn)算符C語言的3種邏輯運(yùn)算符邏輯運(yùn)算符含義示例&&并且x>=3&&x<5||或者x<3||x>=5!非!(x>=3&&x<5)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院12邏輯表達(dá)式邏輯與(表達(dá)式1&&
表達(dá)式2)只有兩個(gè)表達(dá)式都非0時(shí)結(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)計(jì)算方式:先求表達(dá)式1;若得到0則不計(jì)算表達(dá)式2,以0作為整個(gè)表達(dá)式的結(jié)果;否則(表達(dá)式1的值非0)就計(jì)算表達(dá)式2,如果表達(dá)式2值為0則整個(gè)表達(dá)式結(jié)果為0,否則結(jié)果為1
西安電子科技大學(xué)計(jì)算機(jī)學(xué)院13邏輯表達(dá)式邏輯或(表達(dá)式1||
表達(dá)式2)兩個(gè)表達(dá)式的值都為0時(shí)結(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)計(jì)算方式:先求表達(dá)式1;若得到非0則不計(jì)算表達(dá)式2,以1作為整個(gè)表達(dá)式的結(jié)果;否則(當(dāng)表達(dá)式1值為0時(shí))計(jì)算表達(dá)式2,如果它為0則整個(gè)表達(dá)式結(jié)果為0,否則結(jié)果為1。西安電子科技大學(xué)計(jì)算機(jī)學(xué)院14邏輯表達(dá)式邏輯非(!
表達(dá)式)把表達(dá)式的值看作邏輯值,以該值的否定作為結(jié)果操作數(shù)1!操作數(shù)1非零(true)0(false)0(false)1(true)計(jì)算方式:如果表達(dá)式的值非0,則結(jié)果為0;如果表達(dá)式值是0則結(jié)果為1。西安電子科技大學(xué)計(jì)算機(jī)學(xué)院15運(yùn)算符優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)函數(shù)調(diào)用
!+-&(一元運(yùn)算符)*/%+-<<=>=>==!=&&||=(賦值運(yùn)算符)低高西安電子科技大學(xué)計(jì)算機(jī)學(xué)院16邏輯表達(dá)式示例例1:判斷x是否在區(qū)間[3,5)之內(nèi)(range.c)即x大于等于3,并且x小于5x>=3&&x<53<=x<5是否正確?這是數(shù)學(xué)表示方式,在C語言中得不到想要的結(jié)果西安電子科技大學(xué)計(jì)算機(jī)學(xué)院17邏輯表達(dá)式示例例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é)計(jì)算機(jī)學(xué)院18邏輯表達(dá)式示例例3:判斷year表示的年份是不是閏年年份能夠被400整除,或者年份能夠被4整除并且不能被100整除year%400==0||(year%4==0&&year%100!=0)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院19邏輯表達(dá)式示例例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é)計(jì)算機(jī)學(xué)院203.2程序流程控制西安電子科技大學(xué)計(jì)算機(jī)學(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è)計(jì)基礎(chǔ)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院22順序結(jié)構(gòu)由一組順序執(zhí)行的處理塊組成,每個(gè)處理塊可能包含一條或一組語句,完成一項(xiàng)任務(wù)順序結(jié)構(gòu)是最基本的算法結(jié)構(gòu)順序結(jié)構(gòu)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院23分支結(jié)構(gòu)(選擇結(jié)構(gòu))的含義根據(jù)某一條件的判斷結(jié)果,確定程序的流程,即選擇哪一個(gè)程序分支中的處理塊去執(zhí)行最基本的分支結(jié)構(gòu)是二路分支結(jié)構(gòu)以條件判斷為起點(diǎn),如果判斷結(jié)果為真,則執(zhí)行A處理塊的操作,否則執(zhí)行B處理塊的操作分支結(jié)構(gòu)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院24循環(huán)結(jié)構(gòu)的含義根據(jù)某一條件的判斷結(jié)果,反復(fù)執(zhí)行某一處理塊的過程進(jìn)入循環(huán)結(jié)構(gòu),判斷循環(huán)條件,如果循環(huán)條件的結(jié)果為真,則執(zhí)行A處理塊的操作,即循環(huán)一次,然后再次判斷循環(huán)條件,當(dāng)循環(huán)條件為假時(shí),循環(huán)結(jié)束循環(huán)結(jié)構(gòu)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院25三種基本流程控制模式語句塊A語句塊B語句塊A語句塊A條件真假順序執(zhí)行模式選擇執(zhí)行模式重復(fù)執(zhí)行模式三種模式都只有一個(gè)起點(diǎn)和一個(gè)終點(diǎn),因此可以當(dāng)作一個(gè)整體結(jié)構(gòu)嵌入到其他流程模式中條件語句塊A真假西安電子科技大學(xué)計(jì)算機(jī)學(xué)院26在程序中,常常需要根據(jù)不同的情況來從一組語句中選擇一個(gè)來執(zhí)行,這是通過選擇語句來完成的。選擇語句包括:if語句switch語句選擇語句西安電子科技大學(xué)計(jì)算機(jī)學(xué)院27if語句的三種格式if語句//第一種格式if(
條件
){
條件成立時(shí)執(zhí)行的操作}
…//無論條件是否成立均執(zhí)行//例if(count==0
){printf("\n");}西安電子科技大學(xué)計(jì)算機(jī)學(xué)院28if語句的三種格式if語句//第二種格式if(
條件
){
條件成立時(shí)執(zhí)行的操作}else{
條件不成立時(shí)執(zhí)行的操作}
…//無論條件是否成立均執(zhí)行//例
if(x>y
)max=x;
elsemax=y;
西安電子科技大學(xué)計(jì)算機(jī)學(xué)院29if語句的三種格式if語句//第三種格式if
(條件1){//條件1成立}elseif(條件2){//條件1不成立且條件2成立}elseif(條件3){//條件1不成立且條件2不成
//立且條件3成立}else{//條件1,2,3均不成立}西安電子科技大學(xué)計(jì)算機(jī)學(xué)院30if語句當(dāng)操作只有一條語句時(shí),if和else后的大括號(hào)可以不要if和else對(duì)應(yīng)的操作應(yīng)該縮進(jìn),便于代碼理解當(dāng)操作有多條語句時(shí),用大括號(hào)把語句包圍起來形成復(fù)合結(jié)構(gòu)使用if語句應(yīng)注意:西安電子科技大學(xué)計(jì)算機(jī)學(xué)院31復(fù)合結(jié)構(gòu)多個(gè)語句由一對(duì)大括號(hào)包圍起來構(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é)計(jì)算機(jī)學(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);
/*計(jì)算部分*/result=a;if(a%2==1)result=a*3+1;
/*輸出部分*/printf("Theresultis%d.\n",result);return0;}西安電子科技大學(xué)計(jì)算機(jī)學(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);
/*計(jì)算部分*/if(a%2==1) result=a*3+1;elseresult=a/2;
/*輸出部分*/printf("Theresultis%d.\n",result);return0;}西安電子科技大學(xué)計(jì)算機(jī)學(xué)院34if-else語句從鍵盤輸入三個(gè)整數(shù),計(jì)算其中的最大值并將其輸出。#include<stdio.h>intmain(){inta,b,c,max;
/*輸入部分*/printf(“該程序從鍵盤獲取3個(gè)整數(shù),輸出最大值。\n");printf(“請(qǐng)輸入3個(gè)數(shù):\n");scanf("%d%d%d",&a,&b,&c);
/*計(jì)算部分*/
if(a>b)max=a;elsemax=b;if(c>max)max=c;/*輸出部分*/printf(“最大值為:%d.\n",max);return0;}西安電子科技大學(xué)計(jì)算機(jī)學(xué)院35從鍵盤輸入一個(gè)三角形的三條邊,判斷其為何種三角形。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é)計(jì)算機(jī)學(xué)院36If語句的嵌套一般形式
if() if()語句1 else語句2 else if()語句3 else語句4
注意:
語句1、2、3、4可以是復(fù)合語句,每層的if與else配對(duì),或用{}來確定層次關(guān)系。西安電子科技大學(xué)計(jì)算機(jī)學(xué)院37else與哪個(gè)if配對(duì)?if(service_years<5) if(age>=28) salary_level+=1;else salary_level+=2;else與if配對(duì)規(guī)則 --else部分屬于前面最近的無對(duì)應(yīng)else的if語句。if(service_years<5){if(age>=28)salary_level+=1;}elsesalary_level+=2;降低第二個(gè)if的層次,使else與第一個(gè)if配對(duì)if語句的歧義西安電子科技大學(xué)計(jì)算機(jī)學(xué)院38計(jì)算過程先計(jì)算整型表達(dá)式的值依次與常數(shù)表達(dá)式比較若相同則執(zhí)行該分支(子句)否則轉(zhuǎn)向default分支最后退出switch語句特別說明switch后面的表達(dá)式必須為整型、字符型case后面必須為常量表達(dá)式,且各個(gè)case值必須不同case分支中的語句可以有多條,不需要花括號(hào)switch(整型表達(dá)式){case整型常量表達(dá)式1:語句序列1case整型常量表達(dá)式2:語句序列2┇case整型常量表達(dá)式n:語句序列ndefault:默認(rèn)語句序列}switch分支結(jié)構(gòu)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院39switch語句的執(zhí)行流程西安電子科技大學(xué)計(jì)算機(jī)學(xué)院40從鍵盤輸入一個(gè)星期的某一天(0:星期天;1:星期一;...),然后輸出其對(duì)應(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é)計(jì)算機(jī)學(xué)院41break語句的目的終止switch語句的執(zhí)行如果沒有break語句,則程序會(huì)從指定的case分支開始,并在該分支結(jié)束后繼續(xù)執(zhí)行下去除非switch語句結(jié)束,后面的其他case分支或default分支中的語句都會(huì)得到執(zhí)行break語句西安電子科技大學(xué)計(jì)算機(jī)學(xué)院42選擇語句練習(xí)練習(xí)1(root.cpp):寫程序計(jì)算ax2+bx+c=0的兩個(gè)實(shí)根,如果兩個(gè)實(shí)根相同只輸出一個(gè),如果不存在實(shí)根輸出"norealroot"練習(xí)2(swap.cpp):任意給定兩個(gè)整數(shù)x和y,要求用x存儲(chǔ)較小的數(shù),y存儲(chǔ)較大的數(shù),然后輸出。練習(xí)3(fee.cpp):階梯電價(jià)計(jì)費(fèi),電價(jià)分三個(gè)檔次,0~110度電,每度電0.5元;111~210度電,超出110部分每度電0.55元,超過210度電,超出210部分每度電0.70元,給出一個(gè)家庭一月用電量,請(qǐng)計(jì)算出應(yīng)繳的電費(fèi)。西安電子科技大學(xué)計(jì)算機(jī)學(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。給出某個(gè)同學(xué)的成績請(qǐng)判斷是否通過,及獲得的學(xué)分。練習(xí)5(computDays.cpp):給定年和月,求出該月天數(shù),例如2012年10月為31天。西安電子科技大學(xué)計(jì)算機(jī)學(xué)院44選擇語句練習(xí)練習(xí)6(bonus.cpp):企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤提成。利潤I低于或等于100000元的,獎(jiǎng)金可提成10%;100000元<I≤200000元時(shí),低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;200000元<I≤400000元時(shí),低于200000元的部分按上述辦法提成(下同),高于200000元的部分,可提成5%;400000元<I≤600000元時(shí),高于400000元的部分,可提成3%;600000元<I≤1000000元時(shí),高于600000元的部分,可提成1.5%;I>1000000元時(shí),超過1000000元的部分按1%提成。從鍵盤輸入當(dāng)月利潤I,求應(yīng)發(fā)獎(jiǎng)金總數(shù)。西安電子科技大學(xué)計(jì)算機(jī)學(xué)院45循環(huán)是根據(jù)某個(gè)條件的滿足與否來決定是否重復(fù)執(zhí)行一組語句。C語言提供了兩種實(shí)現(xiàn)重復(fù)操作的循環(huán)語句:while語句for語句這兩種循環(huán)語句在表達(dá)能力上是等價(jià)的,在解決某個(gè)具體問題時(shí),用其中的一種可能會(huì)比另一種更加自然。循環(huán)語句西安電子科技大學(xué)計(jì)算機(jī)學(xué)院46while循環(huán)格式:while(表達(dá)式)循環(huán)體while循環(huán)執(zhí)行流程先判斷后執(zhí)行:表達(dá)式為真時(shí),執(zhí)行一遍循環(huán)體(一次迭代),返回重新計(jì)算表達(dá)式的值以確定是否重復(fù)執(zhí)行循環(huán)體;若表達(dá)式為假,則終止循環(huán)為保證循環(huán)終止,循環(huán)體內(nèi)應(yīng)有能改變條件表達(dá)式值的語句while循環(huán)結(jié)構(gòu)47遞增和遞減運(yùn)算符用于變量的遞增(加1)和遞減(減1)操作遞增運(yùn)算符為“++”,遞減運(yùn)算符為“--”遞增和遞減運(yùn)算符可以出現(xiàn)在變量的前面或后面,但不能出現(xiàn)在表達(dá)式或常數(shù)的前面或后面遞增和遞減運(yùn)算符經(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é)計(jì)算機(jī)學(xué)院48遞增和遞減運(yùn)算符遞增和遞減運(yùn)算符出現(xiàn)在表達(dá)式中帶來的問題inty=1,z;z=y++;//z=?,y=?inty=1,z;z=++y;//z=?,y=?先取y的值參與計(jì)算,再遞增y的值inty=1,z;z=y;y++;//z=?,y=?先遞增y的值,再取y的值參與計(jì)算inty=1,z;++y;z=y;//z=?,y=?49復(fù)合賦值運(yùn)算符x+=5等價(jià)于x=x+5x-=5等價(jià)于x=x-5x*=5等價(jià)于x=x*5x/=5等價(jià)于x=x/5x%=5等價(jià)于x=x%5西安電子科技大學(xué)計(jì)算機(jī)學(xué)院50while循環(huán)示例編寫程序,接受用戶輸入的整數(shù)n,計(jì)算1+2+…+n。#include<stdio.h>intmain(){ intn,m,s; printf("請(qǐng)輸入整數(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é)計(jì)算機(jī)學(xué)院51while循環(huán)示例編寫程序,接受用戶輸入的整數(shù)n,求n!。#include<stdio.h>intmain(){ intn,i,f; printf("請(qǐng)輸入整數(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é)計(jì)算機(jī)學(xué)院52for循環(huán)格式for(初始化表達(dá)式;條件表達(dá)式;改變條件的表達(dá)式) 循環(huán)體for循環(huán)執(zhí)行流程先判斷后執(zhí)行:先執(zhí)行初始化表達(dá)式,再計(jì)算條件表達(dá)式,并根據(jù)其結(jié)果決定是否執(zhí)行一遍循環(huán)體(為真時(shí)執(zhí)行),計(jì)算改變條件的表達(dá)式值,返回重新計(jì)算條件表達(dá)式的值以確定循環(huán)是否終止for語句循環(huán)初始化循環(huán)條件循環(huán)參數(shù)調(diào)整西安電子科技大學(xué)計(jì)算機(jī)學(xué)院53逗號(hào)運(yùn)算符通常在for循環(huán)的初始化表達(dá)式中使用用來連接兩個(gè)表達(dá)式,例如:表達(dá)式1,
表達(dá)式2計(jì)算形式:先計(jì)算表達(dá)式1,再計(jì)算表達(dá)式2西安電子科技大學(xué)計(jì)算機(jī)學(xué)院54for循環(huán)示例編寫程序,接受用戶輸入的整數(shù)n,求n!。#include<stdio.h>intmain(){ intn,i,f; printf("請(qǐng)輸入整數(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é)計(jì)算機(jī)學(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é)計(jì)算機(jī)學(xué)院56循環(huán)語句——for循環(huán)使用for循環(huán)的注意事項(xiàng)三個(gè)表達(dá)式都可以沒有,但分號(hào)必須有條件表達(dá)式?jīng)]有,表示循環(huán)一直執(zhí)行永不結(jié)束當(dāng)循環(huán)體只有一條語句時(shí)可以不寫大括號(hào),但為了避免邏輯錯(cuò)誤,無論有多少條語句都加上大括號(hào)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院57for循環(huán)和while循環(huán)相互轉(zhuǎn)換for(初始化表達(dá)式;
條件表達(dá)式;改變條件的表達(dá)式){
循環(huán)體}初始化表達(dá)式;while(
條件表達(dá)式)
{循環(huán)體改變條件的表達(dá)式;}西安電子科技大學(xué)計(jì)算機(jī)學(xué)院58循環(huán)可分為兩類:計(jì)數(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é)計(jì)算機(jī)學(xué)院59例:輸入10個(gè)數(shù),計(jì)算它們的和。#include<stdio.h>intmain(){ doublex,sum=0;inti; printf("請(qǐng)輸入10個(gè)數(shù):"); for(i=0;i<10;i++) { scanf("%lf",&x); sum+=x; } printf("sum=%lf\n",sum); return0;}for循環(huán)舉例西安電子科技大學(xué)計(jì)算機(jī)學(xué)院60while循環(huán)舉例例:求數(shù)列
1/2、3/4、5/8、7/16、9/32……
的所有大于等于0.000001的數(shù)據(jù)項(xiàng)之和,輸出計(jì)算結(jié)果。分析:序號(hào)分子分母12×1-1=121=222×2-1=322=432×3-1=523=8………………i2×i-1=2i-12i=2iai=(2i-1)/2i西安電子科技大學(xué)計(jì)算機(jī)學(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é)計(jì)算機(jī)學(xué)院62循環(huán)結(jié)構(gòu)的特殊控制
——break和continue的使用語句功能break:強(qiáng)制退出循環(huán),循環(huán)體中跟在break語句后面的語句將不再執(zhí)行。continue:提前結(jié)束本輪循環(huán)體的執(zhí)行,準(zhǔn)備進(jìn)入下一次循環(huán)。循環(huán)條件循環(huán)體truefalsebreakcontinue西安電子科技大學(xué)計(jì)算機(jī)學(xué)院63編寫程序,接受用戶輸入的多個(gè)整數(shù)求和。用戶輸入0時(shí)輸入結(jié)束/*輸入與計(jì)算部分*/
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é)計(jì)算機(jī)學(xué)院64編寫程序,接受用戶輸入的多個(gè)整數(shù)求和。注意,僅累加正整數(shù),跳過所有負(fù)數(shù),用戶輸入0時(shí)程序結(jié)束#include<stdio.h>
intmain()
{
intn,sum=0;/*count為輸入整數(shù)的個(gè)數(shù)*//*輸入與計(jì)算部分*/
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)前迭代,不累加負(fù)數(shù)值*/
sum+=n;
}/*輸出部分*/
printf("Thesumis%d.\n",sum);
return0;
}continue語句西安電子科技大學(xué)計(jì)算機(jī)學(xué)院65循環(huán)結(jié)構(gòu)的嵌套例:顯示輸出如下所示的三角形(for語句嵌套)************************************西安電子科技大學(xué)計(jì)算機(jī)學(xué)院66循環(huán)結(jié)構(gòu)的嵌套
分析:行號(hào)空格數(shù)*數(shù) *051 ***143 *****235*******327*********419***********5011西安電子科技大學(xué)計(jì)算機(jī)學(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é)計(jì)算機(jī)學(xué)院68例:編程求出小于n的所有素?cái)?shù)(質(zhì)數(shù))#include<stdio.h>intmain(){ intn,count=0;inti,j; printf("請(qǐng)輸入一個(gè)正整數(shù):"); scanf("%d",&n);//從鍵盤輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何拍攝培訓(xùn)課件
- 贛南衛(wèi)生健康職業(yè)學(xué)院《遙感原理及其應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 相互喂飯培訓(xùn)課件
- 贛東學(xué)院《經(jīng)濟(jì)社會(huì)系統(tǒng)仿真實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級(jí)道德與法治上冊第二單元友誼的天空第四課友誼與成長同行第1課時(shí)誤區(qū)警示新人教版
- 小學(xué)生頒獎(jiǎng)?wù)n件背景
- 小學(xué)生傳統(tǒng)文化禮儀課件
- 《動(dòng)能和勢能教學(xué)》課件
- 礦石運(yùn)輸與堆放技術(shù)
- 五年級(jí)數(shù)學(xué)(小數(shù)除法)計(jì)算題專項(xiàng)練習(xí)及答案匯編
- 光刻技術(shù)員工作總結(jié)
- 2024糖尿病酮癥酸中毒診斷和治療課件
- MOOC 組織學(xué)與胚胎學(xué)-華中科技大學(xué) 中國大學(xué)慕課答案
- 審計(jì)職業(yè)生涯規(guī)劃書
- 2024-2029年中國脊柱側(cè)彎支具行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報(bào)告
- 新媒體部門崗位配置人員架構(gòu)圖
- 統(tǒng)編版語文三年級(jí) 稻草人整本書閱讀推進(jìn)課課件
- 2023年中考語文二輪復(fù)習(xí):名著閱讀 真題練習(xí)題匯編(含答案解析)
- 《汽車驅(qū)動(dòng)橋》汽車標(biāo)準(zhǔn)
- 磁異法探測海底纜線分解課件
- 投資的本質(zhì):巴菲特的12個(gè)投資宗旨
評(píng)論
0/150
提交評(píng)論