![C語言程序設(shè)計教程第4章課件_第1頁](http://file4.renrendoc.com/view/b49e054a7b1eb5a7bf219b9e5768e6d9/b49e054a7b1eb5a7bf219b9e5768e6d91.gif)
![C語言程序設(shè)計教程第4章課件_第2頁](http://file4.renrendoc.com/view/b49e054a7b1eb5a7bf219b9e5768e6d9/b49e054a7b1eb5a7bf219b9e5768e6d92.gif)
![C語言程序設(shè)計教程第4章課件_第3頁](http://file4.renrendoc.com/view/b49e054a7b1eb5a7bf219b9e5768e6d9/b49e054a7b1eb5a7bf219b9e5768e6d93.gif)
![C語言程序設(shè)計教程第4章課件_第4頁](http://file4.renrendoc.com/view/b49e054a7b1eb5a7bf219b9e5768e6d9/b49e054a7b1eb5a7bf219b9e5768e6d94.gif)
![C語言程序設(shè)計教程第4章課件_第5頁](http://file4.renrendoc.com/view/b49e054a7b1eb5a7bf219b9e5768e6d9/b49e054a7b1eb5a7bf219b9e5768e6d95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4章選擇結(jié)構(gòu)程序設(shè)計
4.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式4.2邏輯運(yùn)算符與邏輯表達(dá)式4.3if語句4.4switch語句C語言程序設(shè)計教程2022/12/291第4章選擇結(jié)構(gòu)程序設(shè)計4.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式CC語言用三種語句控制程序的執(zhí)行流程順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。這一章主要講選擇結(jié)構(gòu)。
例如計算分段函數(shù)時,須先判斷x是大于還是小于0的。這時就需要選擇語句來判斷。2022/12/292C語言用三種語句控制程序的執(zhí)行流程順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)4.1關(guān)系運(yùn)算與關(guān)系表達(dá)式關(guān)系運(yùn)算就是比較運(yùn)算,即將兩個數(shù)據(jù)進(jìn)行比較,判定兩個數(shù)據(jù)是否符合給定的關(guān)系。a>b
a==b
a!=b
2022/12/2934.1關(guān)系運(yùn)算與關(guān)系表達(dá)式關(guān)系運(yùn)算就是比較運(yùn)算,即將兩個4.1.1關(guān)系運(yùn)算符C語言有6種:
<小于關(guān)系運(yùn)算符<=小于等于>大于
>=大于等于
==等于)!=不等于
六個關(guān)系運(yùn)算符都是雙元運(yùn)算符。關(guān)系操作數(shù)可以是數(shù)值類型數(shù)據(jù)和字符型數(shù)據(jù)。2022/12/2944.1.1關(guān)系運(yùn)算符2022/12/264關(guān)系運(yùn)算的值關(guān)系成立:1(表示邏輯真);關(guān)系不成立:0(表示邏輯假)。例如:5>3值:15<=3值:05==3值:05!=3值:12022/12/295關(guān)系運(yùn)算的值關(guān)系成立:1(4.1.2關(guān)系表達(dá)式1.關(guān)系表達(dá)式的構(gòu)成是關(guān)系運(yùn)算符將兩個表達(dá)式連接起來,構(gòu)成關(guān)系表達(dá)式。例如:a+b>b+c比較兩個算術(shù)表達(dá)式的值
a<=2*b比較變量和算術(shù)表達(dá)式的值'a'<'b'比較兩個字符的ASCII碼值2022/12/2964.1.2關(guān)系表達(dá)式1.關(guān)系表達(dá)式的構(gòu)成2022/12/2.關(guān)系運(yùn)算符的優(yōu)先級1)<、<=、>和
>=
為同一級,==和!=為同一級。前者的優(yōu)先級高于后者。2)關(guān)系運(yùn)算符優(yōu)先級低于算術(shù)運(yùn)算符。例如:a+b>b+c等效于(a+b)>(b+c)。(2+a)==(b-a)等效于2+a==b-a。2022/12/2972.關(guān)系運(yùn)算符的優(yōu)先級1)<、<=、>和>=為同一級3.關(guān)系運(yùn)算符的結(jié)合律C語言規(guī)定關(guān)系表達(dá)式采取左結(jié)合律。表達(dá)式中出現(xiàn)優(yōu)先級別為同一級別的運(yùn)算符時,則按從左到右結(jié)合方向處理。例如:
inta=2,b=3,c=1;a>b<c值:1先計算a>b,值是0,再計算0<c,值是1
6>3<2值:1
先計算6>3,值是1,再計算1<2,值為12022/12/2983.關(guān)系運(yùn)算符的結(jié)合律C語言規(guī)定關(guān)系表達(dá)式采取左結(jié)合律。表4.2邏輯運(yùn)算符和邏輯表達(dá)式C語言沒有邏輯類型數(shù)據(jù),邏輯運(yùn)算根據(jù)數(shù)據(jù)是否為0進(jìn)行判斷:數(shù)據(jù)為非0:邏輯真,數(shù)據(jù)為0:邏輯假;邏輯運(yùn)算值的表示:邏輯真,值為1,邏輯假,值為0。2022/12/2994.2邏輯運(yùn)算符和邏輯表達(dá)式2022/12/2691.邏輯非!邏輯非是一元運(yùn)算符。操作數(shù)值為0,邏輯非運(yùn)算的結(jié)果為1(邏輯真);當(dāng)操作數(shù)值為非0時,邏輯非運(yùn)算的結(jié)果為0。例如:inta=5,b=3;!a結(jié)果:0!(a<b)結(jié)果:1。因為a<b的值為02022/12/29101.邏輯非!邏輯非是一元運(yùn)算符。2022/12/26102.邏輯與&&邏輯與是二元運(yùn)算,只有參加邏輯與運(yùn)算的兩個操作數(shù)值均為非0(邏輯真)時,結(jié)果才為真。例如:inta=5,b=3;a&&b值:1(a<b)&&(a>0)值:0,因為a<b的值為0。2022/12/29112.邏輯與&&邏輯與是二元運(yùn)算,只有參加邏輯與運(yùn)算的兩個操3.邏輯或||邏輯或也是二元運(yùn)算,只要兩個操作數(shù)中有一個為非0(邏輯真),結(jié)果就為1。例如:
inta=5,b=3a||b值:1
(a<b)||(a>0)值:1因為a>0的值為1。2022/12/29123.邏輯或||邏輯或也是二元運(yùn)算,只要兩個操作數(shù)中有一個為4.2.2邏輯表達(dá)式邏輯運(yùn)算表達(dá)式的構(gòu)成用邏輯運(yùn)算符將表達(dá)式連接起來就構(gòu)成了邏輯表達(dá)式。例如,
!(a>b)
對關(guān)系表達(dá)式的值取非,(a>b)&&(b>c)
(a>b)&&(b>c)||(b==0)2022/12/29134.2.2邏輯表達(dá)式邏輯運(yùn)算表達(dá)式的構(gòu)成2022/12/22.邏輯運(yùn)算符優(yōu)先級
C語言邏輯運(yùn)算符的優(yōu)先級規(guī)定如下:
(1)優(yōu)先級順序為
!→&&→||(2)!高于算術(shù)運(yùn)算符,&&,||
低于關(guān)系運(yùn)算符。例如:!a&&b>5計算順序:(!a)&&(b>5)a==b||a<c
計算順序:(a==b)||(a<c)2022/12/29142.邏輯運(yùn)算符優(yōu)先級C語言邏輯運(yùn)算符的優(yōu)先級規(guī)定如下:3.邏輯運(yùn)算符的結(jié)合律
C語言邏輯運(yùn)算符采用左結(jié)合律。表達(dá)式中出現(xiàn)優(yōu)先級別為同一級別的運(yùn)算符時,按從左到右的結(jié)合方向處理。例如:a&&b&&c
計算順序為:(a&&b)&&c。2022/12/29153.邏輯運(yùn)算符的結(jié)合律
C語言邏輯運(yùn)算符采用左結(jié)合律。表達(dá)式4.3if語句例如計算分段函數(shù)計算x<0,如果結(jié)果為1:計算:y=3-x;否則,計算:y=2*x;需要根據(jù)x的值進(jìn)行流程選擇(分支)。2022/12/29164.3if語句例如計算分段函數(shù)計算x<0,如果結(jié)果表達(dá)式語句真假1.單分支選擇語句if(表達(dá)式)語句首先先判斷表達(dá)式的值語句表達(dá)式若為非0則執(zhí)行下面的語句若為0則跳過該語句。2022/12/2917表達(dá)式語句真假1.單分支選擇語句if(表達(dá)式)語一般形式:i
f(表達(dá)式)語句
main(){floatx,y;scanf(“%f”,&x);if(x<0)y=3-x;y=2*x;printf(“y=%6.2f”,y);}2022/12/2918一般形式:if(表達(dá)式)語句2.雙分支選擇語句
if(表達(dá)式)語句1
else語句2首先先判斷表達(dá)式的值若為非0則執(zhí)行語句1。若為0則執(zhí)行語句2。表達(dá)式語句1真假語句2表達(dá)式語句1語句22022/12/29192.雙分支選擇語句if(表達(dá)式)語句if(表達(dá)式)語句1else語句2main(){floatx,y;scanf(“%f”,&x);if(x<0)y=3-x;elsey=2*x;printf(“y=%6.2f”,y);}2022/12/2920if(表達(dá)式)語句1else語句2main例:輸入兩個數(shù),比較其大小,將較大的數(shù)輸出。流程分析:(1)輸入兩個數(shù)據(jù)a,b;(2)如果a>b則輸出a;否則,輸出b。#include<stdio.h>main(){floata,b;scanf(“%f,%f”,&a,&b);if(a>b)printf(“%f”,a);elseprintf(“%f”,b);}
2022/12/2921例:輸入兩個數(shù),比較其大小,將較大的數(shù)輸出。流程分析:3.多分支選擇語句
表達(dá)式1先判斷表達(dá)式1的值真語句1非0就執(zhí)行下面的語句假表達(dá)式2為0就執(zhí)行下一個判斷表達(dá)式3語句4語句3語句2真真假假一直這樣做下去直到得出最后結(jié)果2022/12/29223.多分支選擇語句表達(dá)式1先判斷表達(dá)式1的值真語句1非0就4.多分支選擇語句一般形式if(表達(dá)式)語句1
elseif(表達(dá)式)語句2
else…2022/12/29234.多分支選擇語句一般形式if(表達(dá)式)語句1
多分支問題:寫一個程序完成下列功能:1輸入一個分?jǐn)?shù)score2score<60輸出E360<=score<70輸出D475<=score<80輸出C580<=score<90輸出B590<=score輸出A2022/12/2924多分支問題:寫一個程序完成下列功能:2022/12/262main(){int
score;
sanf(“%d”,&score);
if(score<60)printf(“%c”,’E’);elseif(score<70)printf(“%c”,’D’);elseif(score<80)printf(“%c”,’C’);elseif(score<90)printf(“%c”,’B’);elseprintf(“%c”,’A’);}2022/12/2925main()2022/12/2625if語句中的表達(dá)式一般為關(guān)系或邏輯表達(dá)式,也可以為任和數(shù)值類型的表達(dá)式。執(zhí)行語句可以是一條簡單語句、空語句或復(fù)合語句,也可以嵌套其它流程控制語句。復(fù)雜條件選擇問題:輸入兩個字符ch1和ch2,如果ch1==‘Z’且ch2==‘B’,
則輸出“Youareright!“2022/12/2926if語句中的表達(dá)式一般為關(guān)系或邏輯表達(dá)式,也可以為任和數(shù)值類main(){charch1,ch2;ch1=getchar();ch2=getchar();if(ch1==‘Z’&&ch2==‘B’)
printf(“Youareright!“);}
2022/12/2927main()2022/12/26274.4.3if語句的嵌套1.在語句中嵌套if語句在上述3種if語句結(jié)構(gòu)中,當(dāng)if(表達(dá)式)或else后面的語句本身又是一個if語句結(jié)構(gòu)時,就形成了if語句的嵌套結(jié)構(gòu)。例如多分支選擇結(jié)構(gòu)。2022/12/29284.4.3if語句的嵌套1.在語句中嵌套if語句2022if語句的二層嵌套結(jié)構(gòu)如下:if(表達(dá)式1)if(表達(dá)式1_2)
語句1_1else
語句1_2elseif(表達(dá)式2_1)
語句2_1else
語句2_22022/12/2929if語句的二層嵌套結(jié)構(gòu)如下:if(表達(dá)式1)2022/
x=getchar();
if(x<=‘z’&&x>=‘a(chǎn)’)if(x<=‘h’&&x>=‘a(chǎn)’)printf(“%c”,x-32);elseprintf(“z”);
elseprintf(“A”);輸入一個字母,如果是a~h則轉(zhuǎn)換成大寫輸出,i~z輸出符號z;大寫字母輸出A2022/12/2930x=getchar();輸入一個字母,如果是a~h則轉(zhuǎn)換成2022/12/29312022/12/26312022/12/29322022/12/2632例4.4
編程實現(xiàn):根據(jù)兩個數(shù)sex和tall分類,如果sex為’F’,當(dāng)tall大于等于150時,輸出”A“,否則輸出“B“;若sex不為’F’,當(dāng)tall大于等于170時,輸出A,否則輸出B。分析:根據(jù)sex分支在sex為’F’的分支中判斷tall>=150否在sex不為’F’的分支中判斷tall>=170否2022/12/2933例4.4編程實現(xiàn):根據(jù)兩個數(shù)sex和tall分類,如果voidmain(){inttall;charsex;printf(“inputsexandtall:”);scanf(“%c%d”,&sex,&tall);if(sex==’F’){if(tall>=150)printf(“A”);elseprintf(“B”);}else{if(tall>=170)printf(“A”);elseprintf(“B”);}}2022/12/2934voidmain()2022/12/2634條件語句在C語言中,簡單的分支選擇可以用條件語句實現(xiàn)。條件語句的一般形式為:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>條件運(yùn)算符?,:的含義是:表達(dá)式1的值為真:計算表達(dá)式2,表達(dá)式1的值為假,計算表達(dá)式3。被計算的表達(dá)式的值作為整個表達(dá)式的值。2022/12/2935條件語句在C語言中,簡單的分支選擇可以用條件語句實現(xiàn)。202用條件語句實現(xiàn):y=x<0?3-x:2*x;此式求值取決于x的值(1)若x<0為真,則y=3-x(2)若x>=0為假,則y=2/x分段函數(shù):2022/12/2936用條件語句實現(xiàn):分段函數(shù):2022/12/2636C語言中條件運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符,但低于邏輯運(yùn)算符。條件運(yùn)算符要求有三個操作對象,稱三目(元)運(yùn)算符。條件運(yùn)算符的結(jié)合方向為“自右至左”。如條件表達(dá)式:
y=x>10?x/10:x>0?x:-x;從右至左結(jié)合,等價于:y=x>10?x/10:(x>0?x:-x);它的功能是:當(dāng)x>10時,y的值為x/10;當(dāng)x<10時,y的值取決于表達(dá)式x>0?2022/12/2937C語言中條件運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符,但低于邏輯運(yùn)算符。4.4Switch語句switch(表達(dá)式)
{
case常量1:語句1;
case常量2:語句2;
case常量3:語句3;
default:語句4;
}另一種多分支語句,根據(jù)表達(dá)式不同的值選擇不同的語句。2022/12/29384.4Switch語句switch(表達(dá)式)
{
ca注意:語句中的表達(dá)式可以是數(shù)字型或字符型,表達(dá)式的值,稱為開關(guān)值。語句結(jié)構(gòu)中各個case后常量表達(dá)式的值必須互不相同;否則執(zhí)行時將出現(xiàn)矛盾,即同一個開關(guān)值,對應(yīng)多種執(zhí)行方案。當(dāng)表達(dá)式的值與某一個常量相等時,就執(zhí)行后面的語句;若無break語句,執(zhí)行該語句后,流程控制轉(zhuǎn)移到下一個分支:繼續(xù)執(zhí)行這一個分支的語句,一至到最后下個語句執(zhí)行完。當(dāng)表達(dá)式的值與所有常量表達(dá)式的值不相等時,執(zhí)行default:后面的語句。2022/12/2939注意:語句中的表達(dá)式可以是數(shù)字型或字符型,表達(dá)式的值,稱為開switch(i)
{case1:printf(″A\n″);
case2:printf(″B\n″);
case 3:printf(″C\n″);
case4:printf(″D\n″);
default:printf(″E\n″);
}
看下面的例子:假設(shè)i=3時,則會從i=3時做起的語句。運(yùn)行結(jié)果為:
C
D
E如果給每條語句加上break;break;
break;
break;break;
這樣就只執(zhí)行一條語句語句后加或不加“break;”可以使多分支變得非常靈活。如果多種情況需要共用一個執(zhí)行語句,可用case的常量表達(dá)式多種情況列出,最后一種情況后,才放執(zhí)行的語句。
2022/12/2940switch(i)
{case1:printf(″A\n
case后面的語句可以是一條語句,也可以是復(fù)合語句,還可以是花括弧括起來的幾條語句,還可以是空語句。有多條語句時會順序執(zhí)行完所有語句。2022/12/2941
case后面的語句可以是一條語句,也可以是復(fù)合語句,還可以例4.6
編程:根據(jù)輸入的學(xué)生的成績判斷等級。當(dāng)成績score≥90時為A等;成績70≤score<90為B等;成績60≤score<70為C等;成績score<60為D等(score為整數(shù))。分析:設(shè)score為整型數(shù),在score≥90的范圍內(nèi),score可能取100,99,.....,90,利用兩個整數(shù)相除,結(jié)果自動取整的特性,score和score/10有如下對應(yīng)關(guān)系:
scorescore/10
≥9010,970~897,860~69660以下default因此,可以用score/10的值來確定分支。2022/12/2942例4.6編程:根據(jù)輸入的學(xué)生的成績判斷等級。當(dāng)成績sco#include<stdio.h>
main()/*用switch語句評級*/
{intscore;
scanf("%d",&score);
switch(score/10)
{case10:
case9:printf("%d:A\n",score);break;
case8:printf("%d:B\n",score);break;case7:printf("%d:C\n",score);break;
case6:printf("%d:D\n",score);break;
default:printf("%d:E\n",score);
}
}
2022/12/2943#include<stdio.h>
main()/*用第4章選擇結(jié)構(gòu)程序設(shè)計
4.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式4.2邏輯運(yùn)算符與邏輯表達(dá)式4.3if語句4.4switch語句C語言程序設(shè)計教程2022/12/2944第4章選擇結(jié)構(gòu)程序設(shè)計4.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式CC語言用三種語句控制程序的執(zhí)行流程順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。這一章主要講選擇結(jié)構(gòu)。
例如計算分段函數(shù)時,須先判斷x是大于還是小于0的。這時就需要選擇語句來判斷。2022/12/2945C語言用三種語句控制程序的執(zhí)行流程順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)4.1關(guān)系運(yùn)算與關(guān)系表達(dá)式關(guān)系運(yùn)算就是比較運(yùn)算,即將兩個數(shù)據(jù)進(jìn)行比較,判定兩個數(shù)據(jù)是否符合給定的關(guān)系。a>b
a==b
a!=b
2022/12/29464.1關(guān)系運(yùn)算與關(guān)系表達(dá)式關(guān)系運(yùn)算就是比較運(yùn)算,即將兩個4.1.1關(guān)系運(yùn)算符C語言有6種:
<小于關(guān)系運(yùn)算符<=小于等于>大于
>=大于等于
==等于)!=不等于
六個關(guān)系運(yùn)算符都是雙元運(yùn)算符。關(guān)系操作數(shù)可以是數(shù)值類型數(shù)據(jù)和字符型數(shù)據(jù)。2022/12/29474.1.1關(guān)系運(yùn)算符2022/12/264關(guān)系運(yùn)算的值關(guān)系成立:1(表示邏輯真);關(guān)系不成立:0(表示邏輯假)。例如:5>3值:15<=3值:05==3值:05!=3值:12022/12/2948關(guān)系運(yùn)算的值關(guān)系成立:1(4.1.2關(guān)系表達(dá)式1.關(guān)系表達(dá)式的構(gòu)成是關(guān)系運(yùn)算符將兩個表達(dá)式連接起來,構(gòu)成關(guān)系表達(dá)式。例如:a+b>b+c比較兩個算術(shù)表達(dá)式的值
a<=2*b比較變量和算術(shù)表達(dá)式的值'a'<'b'比較兩個字符的ASCII碼值2022/12/29494.1.2關(guān)系表達(dá)式1.關(guān)系表達(dá)式的構(gòu)成2022/12/2.關(guān)系運(yùn)算符的優(yōu)先級1)<、<=、>和
>=
為同一級,==和!=為同一級。前者的優(yōu)先級高于后者。2)關(guān)系運(yùn)算符優(yōu)先級低于算術(shù)運(yùn)算符。例如:a+b>b+c等效于(a+b)>(b+c)。(2+a)==(b-a)等效于2+a==b-a。2022/12/29502.關(guān)系運(yùn)算符的優(yōu)先級1)<、<=、>和>=為同一級3.關(guān)系運(yùn)算符的結(jié)合律C語言規(guī)定關(guān)系表達(dá)式采取左結(jié)合律。表達(dá)式中出現(xiàn)優(yōu)先級別為同一級別的運(yùn)算符時,則按從左到右結(jié)合方向處理。例如:
inta=2,b=3,c=1;a>b<c值:1先計算a>b,值是0,再計算0<c,值是1
6>3<2值:1
先計算6>3,值是1,再計算1<2,值為12022/12/29513.關(guān)系運(yùn)算符的結(jié)合律C語言規(guī)定關(guān)系表達(dá)式采取左結(jié)合律。表4.2邏輯運(yùn)算符和邏輯表達(dá)式C語言沒有邏輯類型數(shù)據(jù),邏輯運(yùn)算根據(jù)數(shù)據(jù)是否為0進(jìn)行判斷:數(shù)據(jù)為非0:邏輯真,數(shù)據(jù)為0:邏輯假;邏輯運(yùn)算值的表示:邏輯真,值為1,邏輯假,值為0。2022/12/29524.2邏輯運(yùn)算符和邏輯表達(dá)式2022/12/2691.邏輯非!邏輯非是一元運(yùn)算符。操作數(shù)值為0,邏輯非運(yùn)算的結(jié)果為1(邏輯真);當(dāng)操作數(shù)值為非0時,邏輯非運(yùn)算的結(jié)果為0。例如:inta=5,b=3;!a結(jié)果:0!(a<b)結(jié)果:1。因為a<b的值為02022/12/29531.邏輯非!邏輯非是一元運(yùn)算符。2022/12/26102.邏輯與&&邏輯與是二元運(yùn)算,只有參加邏輯與運(yùn)算的兩個操作數(shù)值均為非0(邏輯真)時,結(jié)果才為真。例如:inta=5,b=3;a&&b值:1(a<b)&&(a>0)值:0,因為a<b的值為0。2022/12/29542.邏輯與&&邏輯與是二元運(yùn)算,只有參加邏輯與運(yùn)算的兩個操3.邏輯或||邏輯或也是二元運(yùn)算,只要兩個操作數(shù)中有一個為非0(邏輯真),結(jié)果就為1。例如:
inta=5,b=3a||b值:1
(a<b)||(a>0)值:1因為a>0的值為1。2022/12/29553.邏輯或||邏輯或也是二元運(yùn)算,只要兩個操作數(shù)中有一個為4.2.2邏輯表達(dá)式邏輯運(yùn)算表達(dá)式的構(gòu)成用邏輯運(yùn)算符將表達(dá)式連接起來就構(gòu)成了邏輯表達(dá)式。例如,
!(a>b)
對關(guān)系表達(dá)式的值取非,(a>b)&&(b>c)
(a>b)&&(b>c)||(b==0)2022/12/29564.2.2邏輯表達(dá)式邏輯運(yùn)算表達(dá)式的構(gòu)成2022/12/22.邏輯運(yùn)算符優(yōu)先級
C語言邏輯運(yùn)算符的優(yōu)先級規(guī)定如下:
(1)優(yōu)先級順序為
!→&&→||(2)!高于算術(shù)運(yùn)算符,&&,||
低于關(guān)系運(yùn)算符。例如:!a&&b>5計算順序:(!a)&&(b>5)a==b||a<c
計算順序:(a==b)||(a<c)2022/12/29572.邏輯運(yùn)算符優(yōu)先級C語言邏輯運(yùn)算符的優(yōu)先級規(guī)定如下:3.邏輯運(yùn)算符的結(jié)合律
C語言邏輯運(yùn)算符采用左結(jié)合律。表達(dá)式中出現(xiàn)優(yōu)先級別為同一級別的運(yùn)算符時,按從左到右的結(jié)合方向處理。例如:a&&b&&c
計算順序為:(a&&b)&&c。2022/12/29583.邏輯運(yùn)算符的結(jié)合律
C語言邏輯運(yùn)算符采用左結(jié)合律。表達(dá)式4.3if語句例如計算分段函數(shù)計算x<0,如果結(jié)果為1:計算:y=3-x;否則,計算:y=2*x;需要根據(jù)x的值進(jìn)行流程選擇(分支)。2022/12/29594.3if語句例如計算分段函數(shù)計算x<0,如果結(jié)果表達(dá)式語句真假1.單分支選擇語句if(表達(dá)式)語句首先先判斷表達(dá)式的值語句表達(dá)式若為非0則執(zhí)行下面的語句若為0則跳過該語句。2022/12/2960表達(dá)式語句真假1.單分支選擇語句if(表達(dá)式)語一般形式:i
f(表達(dá)式)語句
main(){floatx,y;scanf(“%f”,&x);if(x<0)y=3-x;y=2*x;printf(“y=%6.2f”,y);}2022/12/2961一般形式:if(表達(dá)式)語句2.雙分支選擇語句
if(表達(dá)式)語句1
else語句2首先先判斷表達(dá)式的值若為非0則執(zhí)行語句1。若為0則執(zhí)行語句2。表達(dá)式語句1真假語句2表達(dá)式語句1語句22022/12/29622.雙分支選擇語句if(表達(dá)式)語句if(表達(dá)式)語句1else語句2main(){floatx,y;scanf(“%f”,&x);if(x<0)y=3-x;elsey=2*x;printf(“y=%6.2f”,y);}2022/12/2963if(表達(dá)式)語句1else語句2main例:輸入兩個數(shù),比較其大小,將較大的數(shù)輸出。流程分析:(1)輸入兩個數(shù)據(jù)a,b;(2)如果a>b則輸出a;否則,輸出b。#include<stdio.h>main(){floata,b;scanf(“%f,%f”,&a,&b);if(a>b)printf(“%f”,a);elseprintf(“%f”,b);}
2022/12/2964例:輸入兩個數(shù),比較其大小,將較大的數(shù)輸出。流程分析:3.多分支選擇語句
表達(dá)式1先判斷表達(dá)式1的值真語句1非0就執(zhí)行下面的語句假表達(dá)式2為0就執(zhí)行下一個判斷表達(dá)式3語句4語句3語句2真真假假一直這樣做下去直到得出最后結(jié)果2022/12/29653.多分支選擇語句表達(dá)式1先判斷表達(dá)式1的值真語句1非0就4.多分支選擇語句一般形式if(表達(dá)式)語句1
elseif(表達(dá)式)語句2
else…2022/12/29664.多分支選擇語句一般形式if(表達(dá)式)語句1
多分支問題:寫一個程序完成下列功能:1輸入一個分?jǐn)?shù)score2score<60輸出E360<=score<70輸出D475<=score<80輸出C580<=score<90輸出B590<=score輸出A2022/12/2967多分支問題:寫一個程序完成下列功能:2022/12/262main(){int
score;
sanf(“%d”,&score);
if(score<60)printf(“%c”,’E’);elseif(score<70)printf(“%c”,’D’);elseif(score<80)printf(“%c”,’C’);elseif(score<90)printf(“%c”,’B’);elseprintf(“%c”,’A’);}2022/12/2968main()2022/12/2625if語句中的表達(dá)式一般為關(guān)系或邏輯表達(dá)式,也可以為任和數(shù)值類型的表達(dá)式。執(zhí)行語句可以是一條簡單語句、空語句或復(fù)合語句,也可以嵌套其它流程控制語句。復(fù)雜條件選擇問題:輸入兩個字符ch1和ch2,如果ch1==‘Z’且ch2==‘B’,
則輸出“Youareright!“2022/12/2969if語句中的表達(dá)式一般為關(guān)系或邏輯表達(dá)式,也可以為任和數(shù)值類main(){charch1,ch2;ch1=getchar();ch2=getchar();if(ch1==‘Z’&&ch2==‘B’)
printf(“Youareright!“);}
2022/12/2970main()2022/12/26274.4.3if語句的嵌套1.在語句中嵌套if語句在上述3種if語句結(jié)構(gòu)中,當(dāng)if(表達(dá)式)或else后面的語句本身又是一個if語句結(jié)構(gòu)時,就形成了if語句的嵌套結(jié)構(gòu)。例如多分支選擇結(jié)構(gòu)。2022/12/29714.4.3if語句的嵌套1.在語句中嵌套if語句2022if語句的二層嵌套結(jié)構(gòu)如下:if(表達(dá)式1)if(表達(dá)式1_2)
語句1_1else
語句1_2elseif(表達(dá)式2_1)
語句2_1else
語句2_22022/12/2972if語句的二層嵌套結(jié)構(gòu)如下:if(表達(dá)式1)2022/
x=getchar();
if(x<=‘z’&&x>=‘a(chǎn)’)if(x<=‘h’&&x>=‘a(chǎn)’)printf(“%c”,x-32);elseprintf(“z”);
elseprintf(“A”);輸入一個字母,如果是a~h則轉(zhuǎn)換成大寫輸出,i~z輸出符號z;大寫字母輸出A2022/12/2973x=getchar();輸入一個字母,如果是a~h則轉(zhuǎn)換成2022/12/29742022/12/26312022/12/29752022/12/2632例4.4
編程實現(xiàn):根據(jù)兩個數(shù)sex和tall分類,如果sex為’F’,當(dāng)tall大于等于150時,輸出”A“,否則輸出“B“;若sex不為’F’,當(dāng)tall大于等于170時,輸出A,否則輸出B。分析:根據(jù)sex分支在sex為’F’的分支中判斷tall>=150否在sex不為’F’的分支中判斷tall>=170否2022/12/2976例4.4編程實現(xiàn):根據(jù)兩個數(shù)sex和tall分類,如果voidmain(){inttall;charsex;printf(“inputsexandtall:”);scanf(“%c%d”,&sex,&tall);if(sex==’F’){if(tall>=150)printf(“A”);elseprintf(“B”);}else{if(tall>=170)printf(“A”);elseprintf(“B”);}}2022/12/2977voidmain()2022/12/2634條件語句在C語言中,簡單的分支選擇可以用條件語句實現(xiàn)。條件語句的一般形式為:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>條件運(yùn)算符?,:的含義是:表達(dá)式1的值為真:計算表達(dá)式2,表達(dá)式1的值為假,計算表達(dá)式3。被計算的表達(dá)式的值作為整個表達(dá)式的值。2022/12/2978條件語句在C語言中,簡單的分支選擇可以用條件語句實現(xiàn)。202用條件語句實現(xiàn):y=x<0?3-x:2*x;此式求值取決于x的值(1)若x<0為真,則y=3-x(2)若x>=0為假,則y=2/x分段函數(shù):2022/12/2979用條件語句實現(xiàn):分段函數(shù):2022/12/2636C語言中條件運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符,但低于邏輯運(yùn)算符。條件運(yùn)算符要求有三個操作對象,稱三目(元)運(yùn)算符。條件運(yùn)算符的結(jié)合方向為“自右至左”。如條件表達(dá)式:
y=x>10?x/10:x>0?x:-x;從右至左結(jié)合,等價于:y=x>10?x/10:(x>0?x:-x);它的功能是:當(dāng)x>10時,y的值為x/10;當(dāng)x<10時,y的值取決于表達(dá)式x>0?2022/12/2980C語言中條件運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符,但低于邏輯運(yùn)算符。4.4Switch語句switch(表達(dá)式)
{
case常量1
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京課改版歷史七年級上冊第6課《春秋五霸》聽課評課記錄
- 湘教版數(shù)學(xué)九年級上冊5.1《總體平均數(shù)與方差的估計》聽評課記錄2
- 蘇科版九年級數(shù)學(xué)聽評課記錄:第82講期中期末串講
- 統(tǒng)編版七年級下冊道德與法治第四課 揭開情緒的面紗 聽課評課記錄(2課時)
- 華東師大版八年級上冊數(shù)學(xué)聽評課記錄《命題》
- 部編人教版道德與法治九年級下冊全冊集體備課聽課評課記錄
- 人教新課標(biāo)地理七年級上冊《1.1地球和地球儀》聽課評課記錄
- 湘教版數(shù)學(xué)八年級下冊《2.7 正方形》聽評課記錄
- 2025年自動造型線合作協(xié)議書
- 華師大版歷史九年級上冊第3課《古代印度》聽課評課記錄
- 建筑與市政工程第三方質(zhì)量安全巡查方案
- 成品移動公廁施工方案
- 二零二五版財務(wù)顧問保密與工作內(nèi)容協(xié)議3篇
- 2025-2030年中國干混砂漿行業(yè)運(yùn)行狀況及發(fā)展趨勢預(yù)測報告
- 2025年度部隊食堂食材采購與質(zhì)量追溯服務(wù)合同3篇
- 2025江蘇鹽城市交通投資建設(shè)控股集團(tuán)限公司招聘19人高頻重點提升(共500題)附帶答案詳解
- 新人教版一年級下冊數(shù)學(xué)教案集體備課
- 2024托管班二人合伙的協(xié)議書
- 《輸電線路金具識別》課件
- 基于PLC的豬場智能液態(tài)飼喂系統(tǒng)的設(shè)計與研究
- 2023-2024學(xué)年浙江省金華市武義縣七年級(上)期末英語試卷
評論
0/150
提交評論