版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章選擇結(jié)構(gòu)程序設(shè)計(jì)4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.2邏輯運(yùn)算符和邏輯表達(dá)式4.3if語(yǔ)句4.4switch語(yǔ)句4.5程序舉例
4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式2.關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式例:a>b,a+b>b+c,(a=3)>(b=5),’a’<‘b’,(a>b)>(b<c)關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。例:關(guān)系表達(dá)式”a>b”的值為“真”,表達(dá)式的值為1。C語(yǔ)言中沒有專用的邏輯值,1代表真,0代表假
4.2邏輯運(yùn)算符和邏輯表達(dá)式1.邏輯運(yùn)算符及其優(yōu)先次序(1)&&(邏輯與)相當(dāng)于其他語(yǔ)言中的AND(2)||(邏輯或)相當(dāng)于其他語(yǔ)言中的OR(3)!(邏輯非)相當(dāng)于其他語(yǔ)言中的NOT例:a&&b若a,b為真,則a&&b為真。
a||b若a,b之一為真,則a||b為真。!a若a為真,則!a為假。優(yōu)先次序:!(非)->&&()->||()邏輯運(yùn)算符中的“&&”和“||”低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符
4.2邏輯運(yùn)算符和邏輯表達(dá)式2.邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來的式子就是邏輯表達(dá)式。邏輯表達(dá)式的值應(yīng)該是一個(gè)邏輯量“真”或“假”。例:設(shè)a=4,b=5:!a的值為0a&&b的值為1a||b的值為1!a||b的值為14&&0||2的值為1任何非零的數(shù)值被認(rèn)作“真”
4.2邏輯運(yùn)算符和邏輯表達(dá)式例:5>3&&8<4-!0
自左向右運(yùn)算
1&&0邏輯值為08<3邏輯值為04-1值為3!0邏輯值為15>3邏輯值為1表達(dá)式值為0
5.2邏輯運(yùn)算符和邏輯表達(dá)式在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都要被執(zhí)行。(1)a&&b&&c只有a為真時(shí),才需要判斷b的值,只有a和b都為真時(shí),才需要判斷c的值。(2)a||b||c只要a為真,就不必判斷b和c的值,只有a為假,才判斷b。a和b都為假才判斷c例:(m=a>b)&&(n=c>d)當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時(shí),由于“a>b”的值為0,因此m=0,而“n=c>d”不被執(zhí)行,因此n的值不是0而仍保持原值1。
4.2邏輯運(yùn)算符和邏輯表達(dá)式用邏輯表達(dá)式來表示閏年的條件能被4整除,但不能被100整除。能被4整除,又能被400整除。?答
(year%4==0&&year%100!=0)||year%400==0案
值為真(1)是閏年,否則為非閏年。PAB真假PBA真假kA1A2AiAnk=k2k=k1k=knk=ki......二分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)選擇結(jié)構(gòu)
4.3if語(yǔ)句1.If語(yǔ)句的三種基本形式(1)if(表達(dá)式)語(yǔ)句例:
if(x>y)printf(“%d”,x);表達(dá)式語(yǔ)句真(非0)假(0)
4.3if語(yǔ)句(2)if(表達(dá)式)語(yǔ)句1else語(yǔ)句2例:
if(x>y)printf(“%d”,x);elseprintf(“%d”,y);
條件
語(yǔ)句1
語(yǔ)句2YN雙分支
4.3if語(yǔ)句(3)if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3……elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句n多分支
4.3if語(yǔ)句例:
if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;如:if(a==b&&x==y)printf(“a=b,x=y”);
if(a=b)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明:(1)3種形式的if語(yǔ)句中在if后面都有表達(dá)式,一般為邏輯表達(dá)式或關(guān)系表達(dá)式。(2)第二,第三種形式的if語(yǔ)句中,在每個(gè)
else前面有一個(gè)分號(hào),整個(gè)語(yǔ)句結(jié)束處有一個(gè)分號(hào)。(3)在if和else后面可以只含有一個(gè)內(nèi)嵌的操作語(yǔ)句,也可以由多個(gè)操作語(yǔ)句,此時(shí)用花括號(hào)將幾個(gè)語(yǔ)句括起來成為一個(gè)復(fù)合語(yǔ)句。例考慮下面程序的輸出結(jié)果:#include<stdio.h>main(){intx,y;
scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;
printf(“%d,%d\n”,x,y);}CompileError!
4.3if語(yǔ)句例4.1輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大的順序輸出這兩個(gè)數(shù)。
#include<stdio.h>
voidmain()
{
floata,b,t;
scanf(″%f,%f″,&a,&b);
if(a>b)
{t=a;
a=b;
b=t;}
printf(″%5.2f,%5.2f\n″,a,b);
}
yna>bT=aA=bB=t例
4.2求2個(gè)數(shù)中較大者。
#include<stdio.h>
intmain()/*主函數(shù)*/
{
int
max(int
x,inty);/對(duì)被調(diào)用函數(shù)max的聲明*/
inta,b,c;/*定義變量a、b、c*/
scanf(″%d,%d″,&a,&b);/*輸入變量a和b的值*/
c=max(a,b);/*調(diào)用max函數(shù),將得到的值賦給c*/
printf(″max=%d\\n″,c);/*輸出c的值*/
}程序運(yùn)行情況如下:8,5↙(輸入8和5賦給a和b)max=8(輸出c的值)intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}max(int
x,int
y);
max(a,b);
說明:本程序包括main和被調(diào)用函數(shù)max兩個(gè)函數(shù)。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語(yǔ)句將z的值返回給主調(diào)函數(shù)main。
4.3if語(yǔ)句
例4.3輸入三個(gè)數(shù)a,b,c,要求按由小到大的順序輸出。Ifa>b將a和b對(duì)換Ifa>c將a和c對(duì)換Ifb>c將b和c對(duì)換a>ba>cb>ca和b交換a和c交換c和b交換yyynn
4.3if語(yǔ)句
#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("%5.2f,%5.2f,%5.2f\n",a,b,c);
}例4.4輸入三個(gè)數(shù)a,b,c,要求輸出最大的數(shù)。#include<stdio.h>
voidmain()
{
inta,b,c,max;
scanf(″%d,%d,%d″,&a,&b,&c);max=a;
if(max<b)max=b;
if(max<c)max=c;
printf(“%d”,max);
}
4.3if語(yǔ)句2.If語(yǔ)句的嵌套在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套。形式:If()
if()語(yǔ)句1 else語(yǔ)句2Else
if()語(yǔ)句3 else語(yǔ)句4內(nèi)嵌if
4.3if語(yǔ)句匹配規(guī)則:Else總是與它上面的,最近的,統(tǒng)一復(fù)合語(yǔ)句中的,未配對(duì)的if語(yǔ)句配對(duì)。例:If()
if()語(yǔ)句1else
if()語(yǔ)句2else語(yǔ)句3例:If() {if()語(yǔ)句1}else
if()語(yǔ)句2else語(yǔ)句3當(dāng)if和else數(shù)目不同時(shí),可以加花括號(hào)來確定配對(duì)關(guān)系。
4.3if語(yǔ)句
-1(x<0)例
有一個(gè)函數(shù)y=0(x=0),編一程序,輸入一個(gè)x值,輸出y值。1(x>0)算法1:算法1:
輸入x輸入x
若x<0,則y=-1若x<0,則y=-1
若x=0,則y=0否則: 若x>0,則y=1若x=0,則y=0
輸出y若x>0,則y=1
輸出y
4.3if語(yǔ)句
#include<stdio.h>voidmain(){
intx,y;
scanf(“%d”,&x);{
程序段}
printf(“x=%d,y=%d\n”,x,y);}
4.3if語(yǔ)句上例中的程序段有四個(gè),請(qǐng)判斷哪個(gè)是正確的?程序1:程序2:
If(x<0)if(x>=0)Y=-1;if(x>0)y=1;Elseelsey=0;If(x==0)y=0;elsey=-1;Elsey=1;程序3:程序4:Y=-1;y=0;If(x!=0)if(x>=0)
If(x>0)y=1;if(x>0)y=1;Elsey=0;Elsey=-1;正確正確
4.3if語(yǔ)句3.條件運(yùn)算符格式:表達(dá)式1?表達(dá)式2∶表達(dá)式3功能:判斷表達(dá)式1的值,如果成立就執(zhí)行表達(dá)式2,否則就執(zhí)行表達(dá)式3使用場(chǎng)合:若在if語(yǔ)句中,當(dāng)被判別的表達(dá)式的值為“真”或“假”時(shí),都執(zhí)行一個(gè)賦值語(yǔ)句且向同一個(gè)變量賦值時(shí),可以用一個(gè)條件運(yùn)算符來處理。
4.3if語(yǔ)句例:
if(a>b)max=a;elsemax=b;當(dāng)a>b時(shí)將a的值賦給max,當(dāng)a≤b時(shí)將b的值賦給max,可以看到無論a>b是否滿足,都是向同一個(gè)變量賦值??梢杂孟旅娴臈l件運(yùn)算符來處理:max=(a>b)?a∶b;
4.4switch語(yǔ)句switch語(yǔ)句的格式:switch
(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1
case常量表達(dá)式2:語(yǔ)句2
…case常量表達(dá)式n:語(yǔ)句n
default:語(yǔ)句n+1}switch表達(dá)式語(yǔ)句組1語(yǔ)句組2語(yǔ)句組n語(yǔ)句組…...E1E2Endefaultcase
4.4switch語(yǔ)句例:要求按照考試成績(jī)的等級(jí)輸出百分制分?jǐn)?shù)段,用switch語(yǔ)句實(shí)現(xiàn):
switch(grade){case′A′∶printf(″85~100\n″);
case′B′∶printf
(″70~84\n″);
case′C′∶printf
(″60~69\n″);
case′D′∶printf
(″<60\n″);
default∶(printf″error\n″);}
4.4switch語(yǔ)句說明:
switch后面括弧內(nèi)的“表達(dá)式”,ANSI標(biāo)準(zhǔn)允許它為任何類型。(2)當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語(yǔ)句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行default后面的語(yǔ)句。(3)每一個(gè)case的常量表達(dá)式的值必須互不相同,否則就會(huì)出現(xiàn)互相矛盾的現(xiàn)象(對(duì)表達(dá)式的同一個(gè)值,有兩種或多種執(zhí)行方案)。
4.4switch語(yǔ)句(4)各個(gè)case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。例如,可以先出現(xiàn)“default:…”,再出現(xiàn)“case′D′:…”,然后是“case′A′:…”。(5)執(zhí)行完一個(gè)case后面的語(yǔ)句后,流程控制轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行?!癱ase常量表達(dá)式”只是起語(yǔ)句標(biāo)號(hào)作用,并不是在條件判斷。在執(zhí)行switch語(yǔ)句時(shí),根據(jù)switch后面表達(dá)式的值找到匹配的入口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行下去,不再進(jìn)行判斷。應(yīng)該在執(zhí)行一個(gè)case分支后,可以用一個(gè)
break語(yǔ)句來終止switch語(yǔ)句的執(zhí)行。
(6)多個(gè)可以共用一組執(zhí)行語(yǔ)句。
4.5程序舉例例4.5寫程序,判斷某一年是否閏年。 用下圖來表示判斷閏年的算法。
4.5程序舉例#include<stdio.h>
voidmain()
{intyear,leap;
scanf("%d",&year);
if(year%4==0)
{if(year%100==0)
{if(year%400==0)leap=1;
elseleap=0;}
elseleap=1;}
elseleap=0;
if(leap)printf("%dis",year);
elseprintf("%disnot",year);
printf("aleapyear.\n");}if(year%4!=0)leap=0;
elseif(year%100!=0)leap=1;elseif(year%100!=0)leap=0;
elseleap=1;運(yùn)行情況:
1989↙
1989isnotaleapyear.
2000↙
2000isaleapyear.
4.5程序舉例例4.6求a+bx+c=0方程的解?;镜乃惴ǎ孩伲幔剑?,不是二次方程。②-4ac=0,有兩個(gè)相等實(shí)根。③-4ac>0,有兩個(gè)不等實(shí)根。④-4ac<0,有兩個(gè)共軛復(fù)根。#include<stdio.h>
#include<math.h>
voidmain()
{
floata,b,c,disc,x1,x2,realpart,imagpart;
scanf(“%f,%f,%f”,&a,&b,&c);
printf(“theequation”);
if(fabs(a)<=1e-6)printf(“isnotaquadratic\\n”);
else
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)printf(“has
two
equalroots:%8.4f\n”,-b/(2*a));
elseif(disc>1e-6)
{x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf(″hasdistinctrealroots:%8.4fand%8.4f\n″,x1,x2);
}
else
{realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf(″hascomplexroots∶\n″);
printf(″%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年重慶電力高等專科學(xué)校單招綜合素質(zhì)考試模擬測(cè)試卷及答案1套
- 電廠崗位安全培訓(xùn)內(nèi)容課件
- 滿族創(chuàng)意介紹
- 鐵路安全知識(shí)培訓(xùn)教育課件
- 2025年安徽省 人事考試及答案
- 2025年萊蕪市事業(yè)編考試試題及答案
- 電廠安全教育培訓(xùn)臺(tái)賬課件
- 滑移裝載機(jī)培訓(xùn)課件總結(jié)
- 電廠安全培訓(xùn)材料課件
- 第3課《首屆諾貝爾獎(jiǎng)?lì)C發(fā)》教學(xué)課件
- (2025年)四川省自貢市紀(jì)委監(jiān)委公開遴選公務(wù)員筆試試題及答案解析
- 2026屆江蘇省常州市高一上數(shù)學(xué)期末聯(lián)考模擬試題含解析
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國(guó)水質(zhì)監(jiān)測(cè)系統(tǒng)市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 2026安徽省農(nóng)村信用社聯(lián)合社面向社會(huì)招聘農(nóng)商銀行高級(jí)管理人員參考考試試題及答案解析
- 強(qiáng)夯地基施工質(zhì)量控制方案
- 藝考機(jī)構(gòu)協(xié)議書
- 2025年12月27日四川省公安廳遴選面試真題及解析
- 2025-2030中國(guó)海洋工程裝備制造業(yè)市場(chǎng)供需關(guān)系研究及投資策略規(guī)劃分析報(bào)告
- 《生態(tài)環(huán)境重大事故隱患判定標(biāo)準(zhǔn)》解析
- 2025年度吉林省公安機(jī)關(guān)考試錄用特殊職位公務(wù)員(人民警察)備考筆試試題及答案解析
- 巖板采購(gòu)合同范本
評(píng)論
0/150
提交評(píng)論