邏輯表達與流程控制_第1頁
邏輯表達與流程控制_第2頁
邏輯表達與流程控制_第3頁
邏輯表達與流程控制_第4頁
邏輯表達與流程控制_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

邏輯表達與流程控制第一頁,共四十七頁,2022年,8月28日

本章學(xué)習(xí)要點

關(guān)系運算邏輯運算if語句及if語句的嵌套switch語句

第二頁,共四十七頁,2022年,8月28日5.1關(guān)系運算x<=15比較x和15的大小比較的結(jié)果:真假當(dāng)x取值9.5時,x<=15的結(jié)果是:?當(dāng)x取值21.3時,x<=15的結(jié)果是:?關(guān)系運算符x<yx<=yx==yx>yx>=yx!=y關(guān)系表達式:用關(guān)系運算符將2個表達式連接起來的式子。如:x<=1區(qū)分=和==

第三頁,共四十七頁,2022年,8月28日運用關(guān)系表達式表示比較的數(shù)學(xué)式C關(guān)系表達式x≤10x≥10x≠10x=10x<=10x>=10x!=10x==10用關(guān)系表達式描述條件判斷x是否為負數(shù)

x<0判斷x是否不為零

x!=0

第四頁,共四十七頁,2022年,8月28日5.2邏輯運算x<=1關(guān)系運算-1<=x<=10-11 x

x>=-1并且

x<=1x>=-1&&x<=1

第五頁,共四十七頁,2022年,8月28日3種邏輯運算符邏輯與&&

邏輯或||邏輯非!XX&&

YYXYX||

YX!

X

第六頁,共四十七頁,2022年,8月28日

邏輯與

&&

邏輯或||邏輯非!(x>1)&&(y>1)(x>1)||(y>1)(x>1) !(x>1)即x<=1邏輯運算符的含義

第七頁,共四十七頁,2022年,8月28日邏輯運算符的功能邏輯與

&&

邏輯或||邏輯非!

aba&&ba||b!a假假假假真假真假真真真假假真假真真真真假

第八頁,共四十七頁,2022年,8月28日邏輯表達式邏輯表達式:用邏輯運算符將邏輯運算對象連接起來的式子。(ch>='a')&&(ch<='z')

判斷ch是否為小寫英文字母(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')

判斷ch是否為英文字母

第九頁,共四十七頁,2022年,8月28日條件的表示例1寫出滿足下列條件的C表達式。ch是空格或者回車。

ch==''||ch=='\n'number是偶數(shù)。

number%2==0year是閏年,即year能被4整除但不能被100整除,或year能被400整除。

(year%4==0&&year%100!=0)||(year%400==0)

第十頁,共四十七頁,2022年,8月28日5.3選擇控制結(jié)構(gòu)if語句

1if語句的簡單形式if(表達式)語句

第十一頁,共四十七頁,2022年,8月28日例2打印出不及格的成績

第十二頁,共四十七頁,2022年,8月28日例3輸入一個整數(shù),輸出它的絕對值分析:當(dāng)number<0時,number=-number;當(dāng)number>=0時,?

第十三頁,共四十七頁,2022年,8月28日#include<stdio.h>intmain(void){intnumber; printf("Enteranumber:");scanf("%d",&number);if(number<0){number=-number;}printf("Theabsolutevalueis%d.\n",number);return0;}運行結(jié)果:Enteranumber:10

Theabsolutevalueis10.運行結(jié)果:Enteranumber:-300

Theabsolutevalueis300.

第十四頁,共四十七頁,2022年,8月28日2.if~else結(jié)構(gòu)

if(表達式)語句1else語句2

第十五頁,共四十七頁,2022年,8月28日解我們可以使用兩種方法編程:方法一:用兩個簡單的if語句實現(xiàn):

main(){floatscore;scanf(″%f″,&score);

if(score<60.0)printf(″score=%5.1f---Fail\n″,score);if(score>=60.0)printf(″score=%5.1f---Pass\n″,score);}例4打印成績≥60分為“Pass”,否則為“Fail”。

第十六頁,共四十七頁,2022年,8月28日方法二:用if~else語句實現(xiàn):

main(){floatscore;scanf(″%f″,&score);if(score<60.0)printf(″score=%5.1f---Fail\n″,score);elseprintf(″score=%5.1f---Pass\n″,score);}

第十七頁,共四十七頁,2022年,8月28日條件運算符的使用

當(dāng)if~else結(jié)構(gòu)中的語句是表達式語句時,就可以使用條件運算符實現(xiàn):

if(表達式1)表達式2;

else表達式3;用條件運算符表示:表達式1?表達式2:表達式3

第十八頁,共四十七頁,2022年,8月28日如下列語句段:x=10;if(x>9)y=100;elsey=200;用條件運算符改寫程序段:x=10;y=x>9?100:200;

第十九頁,共四十七頁,2022年,8月28日例5輸入x的值,當(dāng)x>0時調(diào)用sqrt(x),否 則調(diào)用fabs(x)。

#include<stdio.h>#include<math.h>main(){floatx,y;scanf(″%f″,&x);y=x>0?sqrt(x):fabs(x);printf(″x=%f,y=%f\n″,x,y);}

第二十頁,共四十七頁,2022年,8月28日3多分支結(jié)構(gòu)與嵌套的if語句和switch語句多分支結(jié)構(gòu)有多種形式實現(xiàn)方法:嵌套的

if語句

else–if語句嵌套的if-else語句switch語句

第二十一頁,共四十七頁,2022年,8月28日(1)嵌套的if語句if(表達式)

語句1else

語句2

if語句

if語句

else–if語句嵌套的if-else語句

第二十二頁,共四十七頁,2022年,8月28日if(表達式1)語句1elseif(表達式2)語句2……elseif(表達式n-1)語句n-1else語句n假表達式1表達式2語句1語句2語句n-1語句n真

表達式n-1假真

假假真

第二十三頁,共四十七頁,2022年,8月28日嵌套的if–else語句if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4

表達式1表達式3語句4真假表達式2語句3語句1語句2真真假假

第二十四頁,共四十七頁,2022年,8月28日if(x<1)y=x+1;elseif(x<2)y=x+2;elsey=x+3;if(x<2)if(x<1)y=x+1;elsey=x+2;elsey=x+3;

x<2

x<1y=x+1y=x+2真

假真

y=x+3假假

x<1

x<2y=x+1y=x+2真

假真

y=x+32種嵌套if語句的比較

第二十五頁,共四十七頁,2022年,8月28日else和if的匹配if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4if(表達式1)if(表達式2)語句1elseif(表達式3)語句3else語句4else與最靠近它的、沒有與別的else匹配過的if匹配if(表達式1)if(表達式2)語句1elseif(表達式3)語句3else語句4{}

第二十六頁,共四十七頁,2022年,8月28日練習(xí):分段計算水費分段計算水費(要求使用嵌套的if-else語句)

第二十七頁,共四十七頁,2022年,8月28日

輸入一個學(xué)生成績,當(dāng)成績≥90時,打印“VeryGood”;當(dāng)80≤成績<90時,打印“Good”;當(dāng)60≤成績<80時,打印“Pass”;當(dāng)成績<60分,打印“Fail”。

例6設(shè)計下面的程序

第二十八頁,共四十七頁,2022年,8月28日方法一:elseif結(jié)構(gòu)來實現(xiàn)main(){floatscore;scanf(″%f″,&score);

if(score>=90)printf(″VeryGood\n″);elseif(score>=80)printf(″Good\n″);elseif(score>=60)printf(″Pass\n″);elseprintf(″Fail\n″);}

第二十九頁,共四十七頁,2022年,8月28日main(){floatscore;scanf(″%f″,&score);if(score>=80)if(score>=90)printf(″VeryGood\n″);

elseprintf(″Good\n″);elseif(score>=60)printf(″Pass\n″);elseprintf(″Fail\n″);}方法二:if嵌套結(jié)構(gòu)來實現(xiàn)

第三十頁,共四十七頁,2022年,8月28日

main(){floatscore;scanf(″%f″,&score);if(score<60)printf(″Fail\n″);elseif(score>=60)printf(″Pass\n″);elseif(score>=80)printf(″Good\n″);elseprintf(″VeryGood\n″);}分析改寫成以下形式:

第三十一頁,共四十七頁,2022年,8月28日(2)switch語句

處理多分支選擇問題,3種情況1)在switch語句的每個語句段中都使用break語句switch(表達式){case常量表達式1:語句段1;break;case常量表達式2:語句段2;break;....…case常量表達式n:語句段n;break;default:語句段n+1;break;}

第三十二頁,共四十七頁,2022年,8月28日

假設(shè)自動售貨機出售4種商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可樂(cola),售價分別是每份3.0、2.5、4.0和3.5元。在屏幕上顯示以下菜單,用戶可以連續(xù)查詢商品的價格,當(dāng)查詢次數(shù)超過5次時,自動退出查詢;不到5次時,用戶可以選擇退出。當(dāng)用戶輸入編號1-4,顯示相應(yīng)商品的價格;輸入0,退出查詢;輸入其他編號,顯示價格為0。[1]Selectcrisps[2]Selectpopcorn[3]Selectchocolate[4]Selectcola[0]Exit例7查詢自動售貨機中商品的價格

第三十三頁,共四十七頁,2022年,8月28日表達式的值=常量表達式2的值表達式語句段1語句段2語句段n語句段n+1表達式的值=常量表達式1的值表達式的值=常量表達式n的值其他breakbreakbreakbreakswitch(choice){case1:price=3.0;break;case2:price=2.5;

break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;}

第三十四頁,共四十七頁,2022年,8月28日#include<stdio.h>intmain(void){intchoice,i;doubleprice;

for(i=1;i<=5;i++)

{printf("[1]Selectcrisps\n");printf("[2]Selectpopcorn\n");printf("[3]Selectchocolate\n");printf("[4]Selectcola\n");printf("[0]exit\n");

printf("Enterchoice:");scanf("%d",&choice);

if(choice==0)break;

switch(choice){case1:price=3.0;break;case2:price=2.5;break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;}printf("price=%0.1f\n",price);

}printf("Thanks\n");}[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:1price=3.0[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:7price=0.0

[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:0Thanks

第三十五頁,共四十七頁,2022年,8月28日2)在switch中不使用breakswitch(表達式){case常量表達式1:語句段1;case常量表達式2:語句段2;....…case常量表達式n:語句段n;default:語句段n+1;}

第三十六頁,共四十七頁,2022年,8月28日switch(choice){case1:price=3.0;case2:price=2.5;case3:price=4.0;case4:price=3.5;default:price=0.0;}表達式的值=常量表達式2的值表達式語句段1語句段2語句段n語句段n+1表達式的值=常量表達式1的值表達式的值=常量表達式n的值其他

第三十七頁,共四十七頁,2022年,8月28日3)在switch的某些語句段中使用breakswitch(choice){case1:price=3.0;break;case2:price=2.5;case3:price=4.0;break;case4:price=3.5;default:price=0.0;}

第三十八頁,共四十七頁,2022年,8月28日

用switch語句輸出學(xué)生的分數(shù)等級。設(shè)分數(shù)大于等于90分者為A等,70分~90分為B等(含70),60分~70分為C等(含60),60分以下為D等,分數(shù)為浮點數(shù)。

編程思路:

switch后的表達式必須是有類型而且求出的結(jié)果應(yīng)當(dāng)是一個個離散的值,而不是一個數(shù)值范圍。應(yīng)該想辦法把一個范圍轉(zhuǎn)換成一個確定的值,這是使用switch語句的關(guān)鍵。我們可以把分數(shù)除以10再取整,即可變成離散的數(shù)值,就可以用switch語句解決了。例8設(shè)計下面程序

第三十九頁,共四十七頁,2022年,8月28日

#include<stdio.h>main(){inti;floatscore;printf("Inputascore:");scanf("%f",&score);i=score/10;switch(i){case10:case9:printf("A");break;case8:case7:printf("B");break;case6:printf("C");break;default:printf("D");}return0;}

第四十頁,共四十七頁,2022年,8月28日例9:輸入兩個整數(shù)a和b,按從小到大的順序輸出。算法設(shè)計:

scanf(“%d%d”,&a,&b);

如果a>b,則a和b交換值;

printf(“%d%d”,a,b);

5.3程序舉例

第四十一頁,共四十七頁,2022年,8月28日#include<stdio.h>main(){inta,b,t;printf("請輸入兩個整數(shù):");scanf("%d%d",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%d%d",a,b);}

第四十二頁,共四十七頁,2022年,8月28日例10:輸入三個整數(shù)a,b,c,按從小到大的順序輸出。算法設(shè)計:

scanf(“%d%d%d”,&a,&b,&c);

如果a>b,則a和b交換值;如果a>c,則a和c交換值;如果b>c,則b和c交換值;

printf(“%d%d%d”,a,b,c);

第四十三頁,共四十七頁,2022年,8月28日#include<stdio.h>main(){inta,b,c,t;

溫馨提示

  • 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

提交評論