版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章選擇結(jié)構(gòu)程序設(shè)計(jì)
浙江傳媒學(xué)院電子信息系C
程序設(shè)計(jì)1第4章選擇結(jié)構(gòu)程序設(shè)計(jì)浙江傳媒學(xué)院電子信息系C程本章主要內(nèi)容表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式條件表達(dá)式語句if語句多分支語句(switch)2本章主要內(nèi)容表達(dá)式24.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式比較兩個(gè)量(x,y)之間的關(guān)系x<yx<=yx==yx>yx>=yx!=y比較的結(jié)果:
真
3>1假
1>3
intx=2,y=6;x=(y>3)x=(x>y)10x=1x=034.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式比較兩個(gè)量(x,y)之間關(guān)系表達(dá)式3<x<5x=1時(shí)x=4時(shí)(3<x)<5恒為14關(guān)系表達(dá)式3<x<544.2邏輯運(yùn)算符和邏輯表達(dá)式3<x<5
035 xx>3并且
x<5
3<x&&x<5
邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來54.2邏輯運(yùn)算符和邏輯表達(dá)式3<x<5邏輯表達(dá)式邏輯運(yùn)算符
X&&YX||YX Y X Y
!X X與或非6邏輯運(yùn)算符與或非6邏輯與
&&
邏輯或||邏輯非!(x>1)&&(y>1)(x>1)||(y>1)(x>1) !(x>1)即x<=1邏輯運(yùn)算符7邏輯與&&邏輯或||邏輯表達(dá)式對(duì)于X&&Y,X和Y可以是:關(guān)系表達(dá)式或邏輯量x<=5&&x>=33&&5(x+y)&&7X,Y可以是任意表達(dá)式判斷邏輯量的真假非0表示真0表示假邏輯運(yùn)算的結(jié)果1表示真0表示假8邏輯表達(dá)式對(duì)于X&&Y,X和Y可以是:X,Y可以是任4.3if語句4.3.1if語句的三種形式語句一般格式1.if(表達(dá)式)
語句功能:計(jì)算表達(dá)式的值,如果是一個(gè)非0值(即邏輯真),就執(zhí)行內(nèi)嵌語句,否則(即邏輯假)跳過內(nèi)嵌語句,順序執(zhí)行后續(xù)語句。內(nèi)嵌語句,可為:賦值語句函數(shù)調(diào)用語句控制語句復(fù)合語句空語句可為算術(shù)、關(guān)系、邏輯、賦值等表達(dá)式94.3if語句4.3.1if語句的三種形式功能:內(nèi)嵌語句if語句的算法:例如:⑴if(x>0)m++;⑵if(a>b){c=a;a=b;b=c;}
表達(dá)式非0
TF
語句N-S結(jié)構(gòu)圖語句流程圖NY表達(dá)式非0?10if語句的算法:例如:表達(dá)式非0N-S結(jié)構(gòu)圖語2.
if(表達(dá)式)
語句1
else語句2語句一般格式if(表達(dá)式)
語句1
else語句2
功能:計(jì)算表達(dá)式的值,如果它的值是一個(gè)非0值(邏輯真),就執(zhí)行內(nèi)嵌語句1,之后跳過內(nèi)嵌語句2,執(zhí)行后續(xù)語句;否則跳過內(nèi)嵌語句1,執(zhí)行內(nèi)嵌語句2,之后執(zhí)行后續(xù)語句。
112.if(表達(dá)式)語句1else語句2語句語句的算法:例如:⑴if(x>0)m++;elsem--;⑵if(ch>='a'&&ch<='z')
{ch=ch-32;
printf("%c\n",ch);}elseprintf("%c\n",ch);
表達(dá)式非0
TF
語句1語句2N-S結(jié)構(gòu)圖語句1
語句2流程圖NY表達(dá)式非0?12語句的算法:例如:表達(dá)式非0N-S結(jié)構(gòu)圖語句1多重分支語句語句一般格式if(表達(dá)式1)
語句1
elseif(表達(dá)式2)
語句2
……elseif(表達(dá)式m)
語句m
else語句
n功能:依次計(jì)算并判斷表達(dá)式i,為非0時(shí)執(zhí)行后面的語句,都為0時(shí),執(zhí)行語句n無論執(zhí)行完那個(gè)語句分支,都轉(zhuǎn)到后續(xù)語句13多重分支語句語句一般格式13多重分支語句的算法流程圖表達(dá)式2?表達(dá)式1?語句n語句1
語句2
語句m…YNYNNY表達(dá)式m?14多重分支語句的算法流程圖表達(dá)式2?表達(dá)式1?語句n語句1多重分支語句的算法N-S結(jié)構(gòu)圖表達(dá)式1?
TF
表達(dá)式2?語句1TF
語句2…
表達(dá)式m?TF
語句m語句n例如:if(a<0)x=-1;elseif(a==0)x=0;elsex=1;15多重分支語句的算法N-S結(jié)構(gòu)圖表達(dá)式1?4.3.2if語句的嵌套如果if的內(nèi)嵌語句中又使用了一個(gè)if語句,則構(gòu)成if語句的嵌套。
【例】比較兩個(gè)整數(shù)的關(guān)系。#include<stdio.h>main(){intx,y;printf("EnterintegerXandY:");scanf("%d%d",&x,&y);
if(x!=y)
if(x>y)printf("X>Y\n");
elseprintf("X<Y\n");
elseprintf("X=Y\n");}應(yīng)該正確判斷:if的內(nèi)嵌語句if和else的配對(duì)運(yùn)行jc4_a提倡縮格書寫有利于閱讀程序164.3.2if語句的嵌套如果if的內(nèi)嵌語句中又使用了一個(gè)
if語句嵌套的形式簡(jiǎn)單if語句的嵌套形式if(表達(dá)式)if語句雙重(或多重)分支if語句的嵌套形式if(表達(dá)式)if語句else
if語句可以是各種形式的if語句可以是各種形式的if語句如果是簡(jiǎn)單if語句,必須用“{}”括起17if語句嵌套的形式簡(jiǎn)單if語句的嵌套形式可以是各種形式的例如:⑴if(c<=100)
if(c>=50)printf("50<=c<=100\n");⑵if(c<=100)if(c>=50)printf("50<=c<=100\n");elseprintf("c<50\n");else
if(c<=150)printf("100<c<=150\n");elseprintf("c>150\n");⑶if(c<=100)if(c>=50)printf("50<=c<=100\n");elseprintf("c<50\n")與哪個(gè)if配對(duì)?18例如:⑴if(c<=100)與哪個(gè)if配對(duì)?18再例如:if(a>b) if(a>c) if(a>d)m=1;elsem=2;elsem=3; 問題:哪一個(gè)else和哪一個(gè)if相匹配?規(guī)則:在嵌套的if~else語句中,else總是與上面的離它最近的尚未配對(duì)的if
配對(duì)。19再例如:if(a>b) 問題:哪一個(gè)else程序:main(){intx;scanf("%d",&x);
if(x%2!=0)
{printf("%disanodd\n",x);
if(x%5==0)printf("%disthetimesof5\n",x);
}
elseprintf("%disaneven\n",x);}運(yùn)行jc4_4思考:如果沒有,算法和輸出如何?20程序:main()運(yùn)行jc4_4思考:如果沒有,算法和輸出學(xué)習(xí)if語句的難點(diǎn)if~else語句的配對(duì)正確用表達(dá)式描述條件例如:當(dāng)x大于5小于10時(shí)令x自增if(5<x<10)x++;正確判斷內(nèi)嵌語句例如:if(x<y)x=x+3;y=y-2;elsex=x-3;y=y+2;if(x>5&&x<10)x++;{}{}21學(xué)習(xí)if語句的難點(diǎn)if~else語句的配對(duì)正確判斷內(nèi)嵌語熟悉常用的if表達(dá)式形式例如有定義:inta,b=0;a等于什么值時(shí),執(zhí)行b=2;語句?if(a==0)b=2;if(a==1)b=2;if(a!=0)b=2;if(a=1)b=2;if(a=0)b=2;if(a)b=2;if(!a)b=2;等價(jià)于等價(jià)于22熟悉常用的if表達(dá)式形式例如有定義:inta,b=0;等4.4條件運(yùn)算符exp1?exp2:exp3非00exp1y=(x>0)?x+2:x*x;intn;(n>0)?2.9:1n=10n=-102.91.0x+2x>0y=
x2x<=0if(x>0)y=x+2;elsey=x*x;234.4條件運(yùn)算符exp1?exp2:exp3非04.5switch語句switch語句的一般形式
switch(表達(dá)式){case常量表達(dá)式1:語句序列1case常量表達(dá)式2:語句序列2
……case常量表達(dá)式n:語句序列ndefault:語句序列n+1
}功能:計(jì)算表達(dá)式的值,與常量表達(dá)式的值比較,等于第i個(gè)值時(shí),順序執(zhí)行語句序列i、i+1、…、n+1若與所有常量表達(dá)式值都不相等,執(zhí)行語句序列n+1。
244.5switch語句switch語句的一般形式24switch語句的算法描述N-S結(jié)構(gòu)圖計(jì)算表達(dá)式常量表達(dá)式1語句序列1常量表達(dá)式2語句序列2…………常量表達(dá)式n語句序列ndefault語句序列n+1例如:switch(a){case5:printf("&");case2:printf("#");default:printf("$");}當(dāng)a等于5,輸出:$當(dāng)a等于2,輸出:#$當(dāng)a是其他值,輸出:$25switch語句的算法描述N-S結(jié)構(gòu)圖計(jì)算常量表達(dá)式1語句序說明:“case常量表達(dá)式i:”等價(jià)于語句標(biāo)號(hào),計(jì)算出的表達(dá)式值等于哪個(gè)語句標(biāo)號(hào),就從哪個(gè)位置開始順序向下執(zhí)行語句序列?!嗾Z句位置影響運(yùn)行結(jié)果例如:switch(a){case2:printf("#");default:printf("$");case5:printf("&");}switch與break語句結(jié)合才能實(shí)現(xiàn)程序的分支break;break;break;26說明:“case常量表達(dá)式i:”等價(jià)于語句標(biāo)號(hào),計(jì)算出的表4.6程序舉例【例4.1】輸入年份,判別該年是否為閏年。思路:年份year為閏年的條件為①
能夠被4整除,但不能被100整除的年份;②
能夠被400整除的年份。只要滿足任意一個(gè)就可以確定它是閏年。例如:1996年、2000年是閏年1998年、1900年不是閏年設(shè)定標(biāo)志變量leap,只要符合其中一個(gè)條件的就是閏年,令leap=1;否則令leap=0
274.6程序舉例【例4.1】輸入年份,判別該年是否為閏年。算法:定義變量year、leap
輸入年份year
能被4整除且不能被100整除?
TF
能被400整除?
leap=1
TFleap=1leap=0leap=1?TF
是閏年不是閏年year%400==0year%4==0&&year%100!=028算法:定義變量year、leapyear%400==0yea程序:main(){intyear,leap;scanf("%d",&year);if(year%4==0&&year%100!=0)leap=1;elseif(year%400==0)leap=1;elseleap=0;if(leap==1)printf("%disaleapyear\n",year);elseprintf("%disnotaleapyear\n",year);}運(yùn)行jc4_b29程序:main()運(yùn)行jc4_b29【例4.2】求一元二次方程ax2+bx+c=0的根。
思路:一元二次方程的根取決于系數(shù)a,b,c求根公式:
判別式d=b2-4ac
當(dāng)
d=0時(shí),方程有兩個(gè)相等的實(shí)根:x1=x2=-b/(2*a)當(dāng)d>0時(shí),方程有兩個(gè)不相等的實(shí)根:x1=(-b+sqrt(d))/(2*a)x2=(-b-sqrt(d))/(2*a)
當(dāng)d<0時(shí),方程有兩個(gè)虛根:x1=jp+ipix2=jp-ipi實(shí)部
jp=-b/(2*a)
虛部
ip=sqrt(-d)/(2*a)4.6程序舉例30【例4.2】求一元二次方程ax2+bx+c=0的根。思路:算法:定義變量a、b、c、d、x1、x2、jp、ip輸入系數(shù)a、b、ca==0TF
計(jì)算d=b*b-4*a*c
不是二d==0
次方程TFd>0
計(jì)算重根TF
輸出重根計(jì)算實(shí)根計(jì)算虛根輸出實(shí)根輸出虛根31算法:定義變量a、b、c、d、x1、x2、jp、ip3程序:#include"math.h"main(){floata,b,c,d,x1,x2,lp,ip;
scanf("%f%f%f",
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年阜陽職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫及參考答案詳解1套
- 2026年湖南幼兒師范高等??茖W(xué)校單招職業(yè)技能測(cè)試題庫帶答案詳解
- 2026年貴州財(cái)經(jīng)職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫及參考答案詳解
- 2026年恩施職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫及參考答案詳解
- 2026年常州信息職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫及參考答案詳解1套
- 2026年陜西鐵路工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫及答案詳解1套
- 2026年哈密職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫附答案詳解
- 2026年河南農(nóng)業(yè)職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫及參考答案詳解1套
- 2026年云南省保山地區(qū)單招職業(yè)適應(yīng)性考試題庫及答案詳解一套
- 2026年貴州電子商務(wù)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫及答案詳解一套
- 10Kv電力變壓器試驗(yàn)報(bào)告
- 市政工程試驗(yàn)檢測(cè)培訓(xùn)教程
- 寧夏調(diào)味料項(xiàng)目可行性研究報(bào)告
- GRR計(jì)算表格模板
- 長(zhǎng)沙市長(zhǎng)郡雙語實(shí)驗(yàn)學(xué)校人教版七年級(jí)上冊(cè)期中生物期中試卷及答案
- 馬克思主義經(jīng)典著作選讀智慧樹知到課后章節(jié)答案2023年下四川大學(xué)
- GB/T 19867.1-2005電弧焊焊接工藝規(guī)程
- GB/T 16102-1995車間空氣中硝基苯的鹽酸萘乙二胺分光光度測(cè)定方法
- GB/T 15171-1994軟包裝件密封性能試驗(yàn)方法
- 醫(yī)院轉(zhuǎn)院證明樣本圖片(范文四篇)
- 外科護(hù)理學(xué)期末試卷3套18p
評(píng)論
0/150
提交評(píng)論