![工學(xué)C語言第5章課件_第1頁(yè)](http://file4.renrendoc.com/view/48ae7e49aa8bbfa6beee522bdb3c037a/48ae7e49aa8bbfa6beee522bdb3c037a1.gif)
![工學(xué)C語言第5章課件_第2頁(yè)](http://file4.renrendoc.com/view/48ae7e49aa8bbfa6beee522bdb3c037a/48ae7e49aa8bbfa6beee522bdb3c037a2.gif)
![工學(xué)C語言第5章課件_第3頁(yè)](http://file4.renrendoc.com/view/48ae7e49aa8bbfa6beee522bdb3c037a/48ae7e49aa8bbfa6beee522bdb3c037a3.gif)
![工學(xué)C語言第5章課件_第4頁(yè)](http://file4.renrendoc.com/view/48ae7e49aa8bbfa6beee522bdb3c037a/48ae7e49aa8bbfa6beee522bdb3c037a4.gif)
![工學(xué)C語言第5章課件_第5頁(yè)](http://file4.renrendoc.com/view/48ae7e49aa8bbfa6beee522bdb3c037a/48ae7e49aa8bbfa6beee522bdb3c037a5.gif)
版權(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ì)制作人:張麗涓第五章制作人:張麗涓5.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符用來比較兩個(gè)數(shù)據(jù)的大小,運(yùn)算的結(jié)果為成立或不成立。如果成立,則結(jié)果為邏輯值“真”,用整數(shù)“1”表示;如果不成立,則結(jié)果為邏輯值“假”,用整數(shù)“0”表示。5.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式運(yùn)算符名稱對(duì)象數(shù)運(yùn)算規(guī)則結(jié)合性<<=>>===!=小于小于或等于大于大于或等于等于不等于雙目滿足則為真結(jié)果為1不滿足為假結(jié)果為0自左向右優(yōu)先級(jí)一、關(guān)系運(yùn)算符及其優(yōu)先級(jí)<<=>>===!=優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)算術(shù)運(yùn)算符優(yōu)于關(guān)系運(yùn)算符
優(yōu)于
賦值運(yùn)算符例:
c>a+b ——c>(a+b)a>b!=c ——(a>b)!=ca==b<c ——a==(b<c)a=b>c ——a=(b>c)如果a=1;b=2;c=3
求各表達(dá)式的值?運(yùn)算符名稱對(duì)象數(shù)運(yùn)算規(guī)則結(jié)合性<小于優(yōu)一、關(guān)系運(yùn)算符及其優(yōu)先例
若a=0;b=0.5;x=0.3;則a<=x<=b的值為:
例
5>2>7>8在C中是允許的,值為:例
inti=1,j=7,a;a=i+(j%4!=0);
則,a=例
‘a(chǎn)’>0結(jié)果為:
‘A’>100結(jié)果為:00210注意:避免對(duì)實(shí)數(shù)作相等或不等的判斷;注意區(qū)分“=”與“==”的不同.例 若a=0;b=0.5;x=0.3;例5>2>二、關(guān)系表達(dá)式關(guān)系表達(dá)式是由關(guān)系運(yùn)算符連接2個(gè)表達(dá)式構(gòu)成的。它的一般形式為:
表達(dá)式關(guān)系運(yùn)算符表達(dá)式 其中:表達(dá)式可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式。 例如:a=2,c=‘a(chǎn)’,f=3.0 a+2!=c-100 值為: (a>c)>=(f>4) 值為:11二、關(guān)系表達(dá)式115.2邏輯運(yùn)算符和邏輯表達(dá)式一、邏輯運(yùn)算符及其優(yōu)先級(jí)邏輯運(yùn)算符是用來對(duì)兩個(gè)關(guān)系式或邏輯量進(jìn)行邏輯運(yùn)算的,運(yùn)算結(jié)果為邏輯值“真(1)”或“假(0)”。在C語言中,邏輯量是用數(shù)值非0和0來表示邏輯真和假的。
邏輯運(yùn)算符運(yùn)算符名稱對(duì)象數(shù)結(jié)合性&&||邏輯與邏輯或雙目自左向右!邏輯非單目自右向左5.2邏輯運(yùn)算符和邏輯表達(dá)式一、邏輯運(yùn)算符及其優(yōu)先級(jí)運(yùn)算符邏輯運(yùn)算符運(yùn)算規(guī)則:aba&&ba||b!a假(0)假(0)真(1)真(1)假(0)真(1)假(0)真(1)假(0)假(0)假(0)真(1)假(0)真(1)真(1)真(1)真(1)真(1)假(0)假(0)
邏輯運(yùn)算符的優(yōu)先級(jí):
!
算術(shù)運(yùn)算符 關(guān)系運(yùn)算符
&& ||邏輯運(yùn)算符運(yùn)算規(guī)則:aba&&ba||b!a假(0)假(0)二、邏輯表達(dá)式邏輯表達(dá)式是由邏輯運(yùn)算符連接表達(dá)式構(gòu)成的。它的一般形式為:
表達(dá)式雙目邏輯運(yùn)算符表達(dá)式
單目邏輯運(yùn)算符表達(dá)式其中表達(dá)式可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、賦值表達(dá)式、逗號(hào)表達(dá)式等。邏輯表達(dá)式的運(yùn)算結(jié)果以數(shù)值“1”代表真,“0”代表假;在判斷一個(gè)數(shù)值時(shí),其值為“0”即為假,“非0”即為真。二、邏輯表達(dá)式例:a=2,c=‘a(chǎn)’,f=3.0,求邏輯表達(dá)式的值。
!(c-’a’) f/3&&a-c a<=c||f<=c !(1&&!a) (c>a)&&(f>4) !(1,2) !(c=‘A’) (1,2,3)&&(3,3,3)11110001例:a=2,c=‘a(chǎn)’,f=3.0,求邏輯表達(dá)式的值。111
三、邏輯運(yùn)算的短路特性 邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例
a&&b&&c——只在a為真時(shí),才判別b的值;
只在a、b都為真時(shí),才判別c的值例
a||b||c——只在a為假時(shí),才判別b的值;
只在a、b都為假時(shí),才判別c的值例
a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)
問,m和n的運(yùn)算結(jié)果結(jié)果:m=0,n=1三、邏輯運(yùn)算的短路特性例a&&b&&c——只在a5.3if語句一、if語句的三種形式
形式一:
if(表達(dá)式)
語句;
或
if(表達(dá)式)語句;其中:表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是其它的表達(dá)式。語句可以是單一語句或復(fù)合語句。exprstatement=1=0
例:if(x>y)printf(“%d”,x);5.3if語句一、if語句的三種形式exprstatem
形式二:
if(表達(dá)式)
語句1;
else
語句2;語句1和語句2可以是單一語句或復(fù)合語句。exprstatement1statement2=1=0
例:if(x>y) max=x; elsemax=y;形式二:exprstatement1statement
形式三:
if(表達(dá)式1)語句1; elseif(表達(dá)式2)語句2; elseif(表達(dá)式3)語句3;
…… elseif(表達(dá)式m)語句m; else語句n;expr1statemnt1=1=0expr2expr3statemntnstatemnt3statemnt2=1=1=0=0
例:if(score>=90)grade=‘A’;elseif(score
>=80)grade
=‘B’;elseif(score
>=70)grade
=‘C’;elseif(score
>=60)grade
=‘D’;elsegrade
=‘F’;形式三:expr1statemnt1=1=0expr2例: if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明:①if后面的表達(dá)式類型任意
②語句可以是復(fù)合語句
③if(x)if(x!=0)if(!x)if(x==0)例: if(a>b)
{t=a;a=b;b=t;}例: if(a==b&&x==y)printf(“[例]從鍵盤輸入兩個(gè)數(shù),求出絕對(duì)值較大者并顯示輸出。 #include<stdio.h>
#include<math.h> voidmain() {inta,b,max; printf(“Enter2numbers:”); scanf(“%d,%d”,&a,&b); if(abs(a)>abs(b)) max=a; else max=b; printf(“Max(absolute)=%d\n”,max);
}運(yùn)行結(jié)果:
Enter2numbers:-78,23<CR>
Max(absolute)=-78選擇結(jié)構(gòu)[例]從鍵盤輸入兩個(gè)數(shù),求出絕對(duì)值較大者并 #inclu[例]判斷輸入的字符是否是“Q”或“q”,若是,顯示Quit。
#include<stdio.h> voidmain() {charc; printf(“Enteracharacter:”); c=getchar(); if(c==‘Q’||c==‘q’)printf(“Quit!\n”);
}運(yùn)行結(jié)果:
Enteracharacter:Q<CR>
Quit![例]判斷輸入的字符是否是“Q”或“q”,若是,顯示Qui 1、將以下條件寫成邏輯表達(dá)式
①
m1-n1≤j≤m1+n1
②X<-5或X>5
③M和N之一為5,但不能同時(shí)為5
④-100<k<100,且K為偶數(shù)
2、寫程序,輸入兩個(gè)數(shù)并判斷兩數(shù)是否相等,輸出判斷結(jié)果。
3、編制一個(gè)數(shù)制轉(zhuǎn)換程序,要求能進(jìn)行如下的數(shù)制轉(zhuǎn)換:10進(jìn)制轉(zhuǎn)換為16進(jìn)制
16進(jìn)制轉(zhuǎn)換為10進(jìn)制
10進(jìn)制轉(zhuǎn)換為8進(jìn)制
8進(jìn)制轉(zhuǎn)換為10進(jìn)制課堂練習(xí) 1、將以下條件寫成邏輯表達(dá)式課堂練習(xí)2、
#include<stdio.h> voidmain() {inta,b; printf("Enterintegera:"); scanf("%d",&a); printf("Enterintegerb:"); scanf("%d",&b);
if(a==b) printf("a==b\n"); else printf("a!=b\n"); }運(yùn)行結(jié)果:
Enterintegera:12Enterintegerb:12
a==b運(yùn)行結(jié)果:
Enterintegera:12
Enterintegerb:9
a!=b2、運(yùn)行結(jié)果:運(yùn)行結(jié)果:
3、
#include<stdio.h> voidmain() { intch,a; printf(“\n1.DectoHex\n”);
printf(“2.HextoDec\n”);
printf(“3.DectoOct\n”);
printf(“4.OcttoDec\n”);
printf(“\nEnteryourchoice:”);
scanf(“%d”,&ch);
if(ch=1)
{printf(“\nEnteraninteger(Dec):”);
scanf(“%d”,&a);
printf(“Dec=%dHex=%x\n”,a,a);
}
if(ch=2)
┆3、#include<stdio.h> 【寫程序】提示輸入3個(gè)整數(shù),判斷最大者并輸出判斷結(jié)果。課堂練習(xí) 【寫程序】提示輸入3個(gè)整數(shù),判斷最大者并輸出判斷結(jié)果。課堂二、if語句的嵌套——if中又包含if。if(expr1)
if(expr2)statement1;
elsestatement2;else
if(expr3)statement3;
elsestatement4;內(nèi)嵌if內(nèi)嵌ifif(expr1)
if(expr2)statement1;
else
statement2;內(nèi)嵌ifif(expr1)
if(expr2)statement1;elsestatement2;
內(nèi)嵌ifif(expr1)statement1;else
if(expr3)statement3;
else
statement4;內(nèi)嵌if二、if語句的嵌套——if中又包含if。if(expr1)if~else配對(duì)原則:else總是和它上面離它最近的未配對(duì)的if配對(duì)if(……)if(……)if(……)else…...else…...else…...
當(dāng)缺少某個(gè)分支else時(shí),正確的配對(duì)方法:加{}例:
if(a==b)if(b==c)printf(“a==b==c”);
elseprintf(“a!=b”);修改:
if(a==b)
{if(b==c)printf(“a==b==c”);
}
elseprintf(“a!=b”);if~else配對(duì)原則:else總是和它上面離它最近的未配[例]y=
編程序,輸入一個(gè)x值,輸出y值。
voidmain()
{intx,y;
scanf(“%d”,&x);
if(x<0)y=-1;
else
if(x>0)y=1;
elsey=0;
printf(“x=%d,y=%d\n”,x,y);
}-1(x<0)0(x=0)1(x>0)運(yùn)行結(jié)果:
-5
x=-5,y=-1去掉else,分析運(yùn)行結(jié)果運(yùn)行結(jié)果:
-5
x=-5,y=0[例]-1(x<0)運(yùn)行結(jié)果:去掉else,分析運(yùn)行結(jié)課堂練習(xí) 1、對(duì)學(xué)生的成績(jī)進(jìn)行分級(jí):分?jǐn)?shù)>=80是優(yōu)良,分?jǐn)?shù)低于60為不及格,其它為及格。{intscore;printf(“Enteranum:\n”);scanf(“%d”,&score);if(score>=80)printf(“Good!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Failed!\n”);}if(score<60)printf(“Failed!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Good!\n”);if(score<60)printf(“Failed!\n”);elseif(score>=80)printf(“Good!\n”);elseprintf(“Passed!\n”);if(score>=60)if(score>=80) printf(“Good!\n”);elseprintf(“Passed!\n”);elseprintf(“Failed!\n”);if(score>=80)if(score>=60) printf(“Passed!\n”);elseprintf(“Good!\n”);elseprintf(“Failed!\n”);課堂練習(xí) 1、對(duì)學(xué)生的成績(jī)進(jìn)行分級(jí):分?jǐn)?shù)>=80是優(yōu)良,分?jǐn)?shù)課堂練習(xí) 2、編程:輸入一個(gè)數(shù),判斷該數(shù)是>0、<0,還是=0,輸出判斷結(jié)果。#include<stdrio.h>voidmain{intx;printf(“Inputyournumber:\n”);scanf(“%d”,&x);if(x>0)printf(“It’sapositive.\n”);elseif(x<0)printf(“It’sanegative.\n”);elseprintf(“It’sazore.\n”);}課堂練習(xí) 2、編程:輸入一個(gè)數(shù),判斷該數(shù)是>0、<0,還是=三、條件運(yùn)算符和條件表達(dá)式
if(a>b)max=a;if語句
elsemax=b;┊
max=(a>b)?a:b;
條件表達(dá)式語句
1.條件運(yùn)算符及其優(yōu)先級(jí)條件運(yùn)算符是三目運(yùn)算符,其三個(gè)運(yùn)算對(duì)象都是表達(dá)式。運(yùn)算符名稱對(duì)象數(shù)運(yùn)算規(guī)則結(jié)合性
?:
條件
三目對(duì)e1?e2:e3
e1為真,獲得e2
e1為假,獲得e3
自右向左三、條件運(yùn)算符和條件表達(dá)式運(yùn)算符名稱對(duì)象數(shù)運(yùn)算規(guī)則結(jié)合性
?
條件運(yùn)算符的優(yōu)先級(jí)如下:其它運(yùn)算符優(yōu)于
條件運(yùn)算符
優(yōu)于賦值運(yùn)算符優(yōu)于逗號(hào)運(yùn)算符 例:設(shè)a,b,c均為2,則
(a==b)?c=1:0 d=a+1==3?b=a+2:a+32.條件表達(dá)式條件表達(dá)式是由條件運(yùn)算符連接表達(dá)式構(gòu)成的。其一般形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3條件運(yùn)算符的優(yōu)先級(jí)如下:例:設(shè)a=2,c=‘a(chǎn)’,f=3.0,求下列條件表達(dá)式的值。
x=a>0?a:-ax=f>=2.0?a<=c:a>=cx=!(a!=0)?!a:!!ax=(f>0)?((a>0)?2:1):((a>0)?1:0)
x=(a>=0)?(a=1):(a=0)
x=(c==‘A’)?(0,1):(1,0)211210例:設(shè)a=2,c=‘a(chǎn)’,f=3.0,求下列條件表達(dá)式的值。5.4switch語句switch是C語言提供的一個(gè)多分支選擇語句。
switch語句比通過嵌套實(shí)現(xiàn)多分支選擇的if語句更直觀。
switch的一般格式如下:
switch(表達(dá)式){caseE1:
語句組1;break;caseE2:
語句組2;break;
…….caseEn:
語句組n;break;[default:
語句組;break;]}
5.4switch語句switch是C語言提供的一
switch語句的控制流程是:首先計(jì)算表達(dá)式的值,然后依次與每一個(gè)case中的常量值進(jìn)行比較,當(dāng)發(fā)現(xiàn)與某個(gè)值匹配,就執(zhí)行該case后面的語句,直到break為止。若表達(dá)式的值與所有case中的常量值都不匹配,則執(zhí)行default后面的語句。switch表達(dá)式語句組1語句組2語句組n語句組…...E1E2Endefaultcaseswitch語句的控制流程是:首先計(jì)算表達(dá)式的值,然說明:①E1,E2,…En是常量表達(dá)式,且值必須互不相同②case語句起標(biāo)號(hào)作用,必須用break跳出③case后可包含多個(gè)可執(zhí)行語句,且不必加{}④switch可嵌套⑤多個(gè)case可共用一組執(zhí)行語句例:switch(ch)
case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;
……..說明:例:switch(ch)例:
switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}score為5時(shí),輸出:
Verygood!Good!Pass!Fail!dataerror!例:switch(score)score為5時(shí),輸出:例:voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){ case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}運(yùn)行結(jié)果:a=2,b=1例:voidmain()運(yùn)行結(jié)果:a=2,b=1#include<stdio.h>main(){intc;printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}}例:根據(jù)輸入字母輸出字符串#include<stdio.h>例:根據(jù)輸入字母輸出字符[例]用switch語句實(shí)現(xiàn)菜單選擇數(shù)據(jù)轉(zhuǎn)換功能。#include<stdio.h>
main()
{intch,a;
printf(“\n1.DectoHex\n”);
printf(“2.HextoDec\n”);
printf(“3.DectoOct\n”);
printf(“4.OcttoDec\n”);
printf(“\nEnteryourchoice:”);
scanf(“%d”,&ch);
switch(ch)
{case1:printf(“\nEnteraninteger(Dec):”);
scanf(“%d”,&a);
printf(“Dec=%dHex=%x\n”,a,a);
break;
case2:┆[例]用switch語句實(shí)現(xiàn)菜單選擇數(shù)據(jù)轉(zhuǎn)換功能。[例]輸入一個(gè)字符,判斷其是否是A(Abort)或R(Retry)或F(Fail),并輸出相應(yīng)信息。
#include<stdio.h>voidmain(){charc;printf(“Abort,Retry,Fail?”);c=getchar();switch(c){case‘a(chǎn)’:case‘A’:printf(“Abort!\n”);
break;case‘r’:
case‘R’:printf(“Retry!\n”);
break;case‘f’:
case‘F’:printf(“Fail!\n”);
break;default:
printf(“Erroneouscharacter!\n”);
}
}
運(yùn)行結(jié)果: Abort,Retry,Fail?r<CR>
Retry!
運(yùn)行結(jié)果: Abort,Retry,Fail?e<CR>
Erroneouscharacter![例]輸入一個(gè)字符,判斷其是否是A(Abort)或R(Ret5.5程序舉例[例]寫程序,判某一年是否是閏年。year%4?year%100?year%400?leap=1?leap=0leap=1leap=1leap=0noleapyearleapyearNN=0NYYYY5.5程序舉例[例]寫程序,判某一年是否是閏年。year%[例]
寫一個(gè)計(jì)算器程序,用戶輸入運(yùn)算數(shù)和四則運(yùn)算符,輸出計(jì)算結(jié)果.
當(dāng)輸入的不是四則運(yùn)算符或除數(shù)為0時(shí),提示出錯(cuò)信息.
[例]#include<stdio.h>
voidmain()
{floata,b;charc;
printf(“Inputexpression:a+(-,*,/)b\n”);
scanf(“%f%c%f”,&a,&c,&b);
switch(c)
{case‘+’:printf(“=%f\n”,a+b);break;
case‘-’:printf(“=%f\n”,a-b);break;case‘*’:printf(“=%f\n”,a*b);break;#include<stdio.h>
voidmain()case‘/’:if(b==0)printf(“datadividedbyzero\n”);elseprintf(“=%f\n”,a/b); break;default:printf(“inputerror\n”);}}case‘/’:
編寫程序,用戶分別輸入年、月,輸出該月的天數(shù)。
課堂練習(xí) 編寫程序,用戶分別輸入年、月,輸出該月的天數(shù)。
課堂練習(xí)#include<stdio.h>
main()
{intyear,month,day;printf(“inputyear”);
scanf(“%d”,&year);
printf(“inputmonth”);scanf(“%d”,&month);
switch(month)
{case1:
case3:case5:#include<stdio.h>
main()
{incase7:
case8:case10:case12:day=31;break;case4:
case6:case9:case11:day=30;break;
case2: if((year%4==0&&year%100!=0) ||(year%400==0))day=29; elseday=28;}printf(“%dyear%dmonth=%day\n”, year,month,day);}case7:
case8:第五章選擇結(jié)構(gòu)程序設(shè)計(jì)制作人:張麗涓第五章制作人:張麗涓5.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符用來比較兩個(gè)數(shù)據(jù)的大小,運(yùn)算的結(jié)果為成立或不成立。如果成立,則結(jié)果為邏輯值“真”,用整數(shù)“1”表示;如果不成立,則結(jié)果為邏輯值“假”,用整數(shù)“0”表示。5.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式運(yùn)算符名稱對(duì)象數(shù)運(yùn)算規(guī)則結(jié)合性<<=>>===!=小于小于或等于大于大于或等于等于不等于雙目滿足則為真結(jié)果為1不滿足為假結(jié)果為0自左向右優(yōu)先級(jí)一、關(guān)系運(yùn)算符及其優(yōu)先級(jí)<<=>>===!=優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)算術(shù)運(yùn)算符優(yōu)于關(guān)系運(yùn)算符
優(yōu)于
賦值運(yùn)算符例:
c>a+b ——c>(a+b)a>b!=c ——(a>b)!=ca==b<c ——a==(b<c)a=b>c ——a=(b>c)如果a=1;b=2;c=3
求各表達(dá)式的值?運(yùn)算符名稱對(duì)象數(shù)運(yùn)算規(guī)則結(jié)合性<小于優(yōu)一、關(guān)系運(yùn)算符及其優(yōu)先例
若a=0;b=0.5;x=0.3;則a<=x<=b的值為:
例
5>2>7>8在C中是允許的,值為:例
inti=1,j=7,a;a=i+(j%4!=0);
則,a=例
‘a(chǎn)’>0結(jié)果為:
‘A’>100結(jié)果為:00210注意:避免對(duì)實(shí)數(shù)作相等或不等的判斷;注意區(qū)分“=”與“==”的不同.例 若a=0;b=0.5;x=0.3;例5>2>二、關(guān)系表達(dá)式關(guān)系表達(dá)式是由關(guān)系運(yùn)算符連接2個(gè)表達(dá)式構(gòu)成的。它的一般形式為:
表達(dá)式關(guān)系運(yùn)算符表達(dá)式 其中:表達(dá)式可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式。 例如:a=2,c=‘a(chǎn)’,f=3.0 a+2!=c-100 值為: (a>c)>=(f>4) 值為:11二、關(guān)系表達(dá)式115.2邏輯運(yùn)算符和邏輯表達(dá)式一、邏輯運(yùn)算符及其優(yōu)先級(jí)邏輯運(yùn)算符是用來對(duì)兩個(gè)關(guān)系式或邏輯量進(jìn)行邏輯運(yùn)算的,運(yùn)算結(jié)果為邏輯值“真(1)”或“假(0)”。在C語言中,邏輯量是用數(shù)值非0和0來表示邏輯真和假的。
邏輯運(yùn)算符運(yùn)算符名稱對(duì)象數(shù)結(jié)合性&&||邏輯與邏輯或雙目自左向右!邏輯非單目自右向左5.2邏輯運(yùn)算符和邏輯表達(dá)式一、邏輯運(yùn)算符及其優(yōu)先級(jí)運(yùn)算符邏輯運(yùn)算符運(yùn)算規(guī)則:aba&&ba||b!a假(0)假(0)真(1)真(1)假(0)真(1)假(0)真(1)假(0)假(0)假(0)真(1)假(0)真(1)真(1)真(1)真(1)真(1)假(0)假(0)
邏輯運(yùn)算符的優(yōu)先級(jí):
!
算術(shù)運(yùn)算符 關(guān)系運(yùn)算符
&& ||邏輯運(yùn)算符運(yùn)算規(guī)則:aba&&ba||b!a假(0)假(0)二、邏輯表達(dá)式邏輯表達(dá)式是由邏輯運(yùn)算符連接表達(dá)式構(gòu)成的。它的一般形式為:
表達(dá)式雙目邏輯運(yùn)算符表達(dá)式
單目邏輯運(yùn)算符表達(dá)式其中表達(dá)式可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、賦值表達(dá)式、逗號(hào)表達(dá)式等。邏輯表達(dá)式的運(yùn)算結(jié)果以數(shù)值“1”代表真,“0”代表假;在判斷一個(gè)數(shù)值時(shí),其值為“0”即為假,“非0”即為真。二、邏輯表達(dá)式例:a=2,c=‘a(chǎn)’,f=3.0,求邏輯表達(dá)式的值。
!(c-’a’) f/3&&a-c a<=c||f<=c !(1&&!a) (c>a)&&(f>4) !(1,2) !(c=‘A’) (1,2,3)&&(3,3,3)11110001例:a=2,c=‘a(chǎn)’,f=3.0,求邏輯表達(dá)式的值。111
三、邏輯運(yùn)算的短路特性 邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例
a&&b&&c——只在a為真時(shí),才判別b的值;
只在a、b都為真時(shí),才判別c的值例
a||b||c——只在a為假時(shí),才判別b的值;
只在a、b都為假時(shí),才判別c的值例
a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)
問,m和n的運(yùn)算結(jié)果結(jié)果:m=0,n=1三、邏輯運(yùn)算的短路特性例a&&b&&c——只在a5.3if語句一、if語句的三種形式
形式一:
if(表達(dá)式)
語句;
或
if(表達(dá)式)語句;其中:表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是其它的表達(dá)式。語句可以是單一語句或復(fù)合語句。exprstatement=1=0
例:if(x>y)printf(“%d”,x);5.3if語句一、if語句的三種形式exprstatem
形式二:
if(表達(dá)式)
語句1;
else
語句2;語句1和語句2可以是單一語句或復(fù)合語句。exprstatement1statement2=1=0
例:if(x>y) max=x; elsemax=y;形式二:exprstatement1statement
形式三:
if(表達(dá)式1)語句1; elseif(表達(dá)式2)語句2; elseif(表達(dá)式3)語句3;
…… elseif(表達(dá)式m)語句m; else語句n;expr1statemnt1=1=0expr2expr3statemntnstatemnt3statemnt2=1=1=0=0
例:if(score>=90)grade=‘A’;elseif(score
>=80)grade
=‘B’;elseif(score
>=70)grade
=‘C’;elseif(score
>=60)grade
=‘D’;elsegrade
=‘F’;形式三:expr1statemnt1=1=0expr2例: if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明:①if后面的表達(dá)式類型任意
②語句可以是復(fù)合語句
③if(x)if(x!=0)if(!x)if(x==0)例: if(a>b)
{t=a;a=b;b=t;}例: if(a==b&&x==y)printf(“[例]從鍵盤輸入兩個(gè)數(shù),求出絕對(duì)值較大者并顯示輸出。 #include<stdio.h>
#include<math.h> voidmain() {inta,b,max; printf(“Enter2numbers:”); scanf(“%d,%d”,&a,&b); if(abs(a)>abs(b)) max=a; else max=b; printf(“Max(absolute)=%d\n”,max);
}運(yùn)行結(jié)果:
Enter2numbers:-78,23<CR>
Max(absolute)=-78選擇結(jié)構(gòu)[例]從鍵盤輸入兩個(gè)數(shù),求出絕對(duì)值較大者并 #inclu[例]判斷輸入的字符是否是“Q”或“q”,若是,顯示Quit。
#include<stdio.h> voidmain() {charc; printf(“Enteracharacter:”); c=getchar(); if(c==‘Q’||c==‘q’)printf(“Quit!\n”);
}運(yùn)行結(jié)果:
Enteracharacter:Q<CR>
Quit![例]判斷輸入的字符是否是“Q”或“q”,若是,顯示Qui 1、將以下條件寫成邏輯表達(dá)式
①
m1-n1≤j≤m1+n1
②X<-5或X>5
③M和N之一為5,但不能同時(shí)為5
④-100<k<100,且K為偶數(shù)
2、寫程序,輸入兩個(gè)數(shù)并判斷兩數(shù)是否相等,輸出判斷結(jié)果。
3、編制一個(gè)數(shù)制轉(zhuǎn)換程序,要求能進(jìn)行如下的數(shù)制轉(zhuǎn)換:10進(jìn)制轉(zhuǎn)換為16進(jìn)制
16進(jìn)制轉(zhuǎn)換為10進(jìn)制
10進(jìn)制轉(zhuǎn)換為8進(jìn)制
8進(jìn)制轉(zhuǎn)換為10進(jìn)制課堂練習(xí) 1、將以下條件寫成邏輯表達(dá)式課堂練習(xí)2、
#include<stdio.h> voidmain() {inta,b; printf("Enterintegera:"); scanf("%d",&a); printf("Enterintegerb:"); scanf("%d",&b);
if(a==b) printf("a==b\n"); else printf("a!=b\n"); }運(yùn)行結(jié)果:
Enterintegera:12Enterintegerb:12
a==b運(yùn)行結(jié)果:
Enterintegera:12
Enterintegerb:9
a!=b2、運(yùn)行結(jié)果:運(yùn)行結(jié)果:
3、
#include<stdio.h> voidmain() { intch,a; printf(“\n1.DectoHex\n”);
printf(“2.HextoDec\n”);
printf(“3.DectoOct\n”);
printf(“4.OcttoDec\n”);
printf(“\nEnteryourchoice:”);
scanf(“%d”,&ch);
if(ch=1)
{printf(“\nEnteraninteger(Dec):”);
scanf(“%d”,&a);
printf(“Dec=%dHex=%x\n”,a,a);
}
if(ch=2)
┆3、#include<stdio.h> 【寫程序】提示輸入3個(gè)整數(shù),判斷最大者并輸出判斷結(jié)果。課堂練習(xí) 【寫程序】提示輸入3個(gè)整數(shù),判斷最大者并輸出判斷結(jié)果。課堂二、if語句的嵌套——if中又包含if。if(expr1)
if(expr2)statement1;
elsestatement2;else
if(expr3)statement3;
elsestatement4;內(nèi)嵌if內(nèi)嵌ifif(expr1)
if(expr2)statement1;
else
statement2;內(nèi)嵌ifif(expr1)
if(expr2)statement1;elsestatement2;
內(nèi)嵌ifif(expr1)statement1;else
if(expr3)statement3;
else
statement4;內(nèi)嵌if二、if語句的嵌套——if中又包含if。if(expr1)if~else配對(duì)原則:else總是和它上面離它最近的未配對(duì)的if配對(duì)if(……)if(……)if(……)else…...else…...else…...
當(dāng)缺少某個(gè)分支else時(shí),正確的配對(duì)方法:加{}例:
if(a==b)if(b==c)printf(“a==b==c”);
elseprintf(“a!=b”);修改:
if(a==b)
{if(b==c)printf(“a==b==c”);
}
elseprintf(“a!=b”);if~else配對(duì)原則:else總是和它上面離它最近的未配[例]y=
編程序,輸入一個(gè)x值,輸出y值。
voidmain()
{intx,y;
scanf(“%d”,&x);
if(x<0)y=-1;
else
if(x>0)y=1;
elsey=0;
printf(“x=%d,y=%d\n”,x,y);
}-1(x<0)0(x=0)1(x>0)運(yùn)行結(jié)果:
-5
x=-5,y=-1去掉else,分析運(yùn)行結(jié)果運(yùn)行結(jié)果:
-5
x=-5,y=0[例]-1(x<0)運(yùn)行結(jié)果:去掉else,分析運(yùn)行結(jié)課堂練習(xí) 1、對(duì)學(xué)生的成績(jī)進(jìn)行分級(jí):分?jǐn)?shù)>=80是優(yōu)良,分?jǐn)?shù)低于60為不及格,其它為及格。{intscore;printf(“Enteranum:\n”);scanf(“%d”,&score);if(score>=80)printf(“Good!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Failed!\n”);}if(score<60)printf(“Failed!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Good!\n”);if(score<60)printf(“Failed!\n”);elseif(score>=80)printf(“Good!\n”);elseprintf(“Passed!\n”);if(score>=60)if(score>=80) printf(“Good!\n”);elseprintf(“Passed!\n”);elseprintf(“Failed!\n”);if(score>=80)if(score>=60) printf(“Passed!\n”);elseprintf(“Good!\n”);elseprintf(“Failed!\n”);課堂練習(xí) 1、對(duì)學(xué)生的成績(jī)進(jìn)行分級(jí):分?jǐn)?shù)>=80是優(yōu)良,分?jǐn)?shù)課堂練習(xí) 2、編程:輸入一個(gè)數(shù),判斷該數(shù)是>0、<0,還是=0,輸出判斷結(jié)果。#include<stdrio.h>voidmain{intx;printf(“Inputyournumber:\n”);scanf(“%d”,&x);if(x>0)printf(“It’sapositive.\n”);elseif(x<0)printf(“It’sanegative.\n”);elseprintf(“It’sazore.\n”);}課堂練習(xí) 2、編程:輸入一個(gè)數(shù),判斷該數(shù)是>0、<0,還是=三、條件運(yùn)算符和條件表達(dá)式
if(a>b)max=a;if語句
elsemax=b;┊
max=(a>b)?a:b;
條件表達(dá)式語句
1.條件運(yùn)算符及其優(yōu)先級(jí)條件運(yùn)算符是三目運(yùn)算符,其三個(gè)運(yùn)算對(duì)象都是表達(dá)式。運(yùn)算符名稱對(duì)象數(shù)運(yùn)算規(guī)則結(jié)合性
?:
條件
三目對(duì)e1?e2:e3
e1為真,獲得e2
e1為假,獲得e3
自右向左三、條件運(yùn)算符和條件表達(dá)式運(yùn)算符名稱對(duì)象數(shù)運(yùn)算規(guī)則結(jié)合性
?
條件運(yùn)算符的優(yōu)先級(jí)如下:其它運(yùn)算符優(yōu)于
條件運(yùn)算符
優(yōu)于賦值運(yùn)算符優(yōu)于逗號(hào)運(yùn)算符 例:設(shè)a,b,c均為2,則
(a==b)?c=1:0 d=a+1==3?b=a+2:a+32.條件表達(dá)式條件表達(dá)式是由條件運(yùn)算符連接表達(dá)式構(gòu)成的。其一般形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3條件運(yùn)算符的優(yōu)先級(jí)如下:例:設(shè)a=2,c=‘a(chǎn)’,f=3.0,求下列條件表達(dá)式的值。
x=a>0?a:-ax=f>=2.0?a<=c:a>=cx=!(a!=0)?!a:!!ax=(f>0)?((a>0)?2:1):((a>0)?1:0)
x=(a>=0)?(a=1):(a=0)
x=(c==‘A’)?(0,1):(1,0)211210例:設(shè)a=2,c=‘a(chǎn)’,f=3.0,求下列條件表達(dá)式的值。5.4switch語句switch是C語言提供的一個(gè)多分支選擇語句。
switch語句比通過嵌套實(shí)現(xiàn)多分支選擇的if語句更直觀。
switch的一般格式如下:
switch(表達(dá)式){caseE1:
語句組1;break;caseE2:
語句組2;break;
…….caseEn:
語句組n;break;[default:
語句組;break;]}
5.4switch語句switch是C語言提供的一
switch語句的控制流程是:首先計(jì)算表達(dá)式的值,然后依次與每一個(gè)case中的常量值進(jìn)行比較,當(dāng)發(fā)現(xiàn)與某個(gè)值匹配,就執(zhí)行該case后面的語句,直到break為止。若表達(dá)式的值與所有case中的常量值都不匹配,則執(zhí)行default后面的語句。switch表達(dá)式語句組1語句組2語句組n語句組…...E1E2Endefaultcaseswitch語句的控制流程是:首先計(jì)算表達(dá)式的值,然說明:①E1,E2,…En是常量表達(dá)式,且值必須互不相同②case語句起標(biāo)號(hào)作用,必須用break跳出③case后可包含多個(gè)可執(zhí)行語句,且不必加{}④switch可嵌套⑤多個(gè)case可共用一組執(zhí)行語句例:switch(ch)
case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;
……..說明:例:switch(ch)例:
switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}score為5時(shí),輸出:
Verygood!Good!Pass!Fail!dataerror!例:switch(score)score為5時(shí),輸出:例:voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){ case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}運(yùn)行結(jié)果:a=2,b=1例:voidmain()運(yùn)行結(jié)果:a=2,b=1#include<stdio.h>main(){intc;printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度酒店客房翻新裝修承包合同
- 2025年度廚師餐飲項(xiàng)目合伙人聘用合同范例
- 2025年離婚協(xié)議中共同債務(wù)分擔(dān)及清償協(xié)議范本
- 2025年度離婚協(xié)議書中子女心理健康關(guān)懷與輔導(dǎo)協(xié)議
- 2025年度城市綜合體房地產(chǎn)開發(fā)建設(shè)工程合同
- 制定客戶忠誠(chéng)計(jì)劃的月度工作計(jì)劃
- 住院患者權(quán)益維護(hù)措施計(jì)劃
- 國(guó)際貿(mào)易的市場(chǎng)分析與預(yù)測(cè)計(jì)劃
- 應(yīng)對(duì)突發(fā)事件的生產(chǎn)計(jì)劃調(diào)整
- 秋季學(xué)期學(xué)業(yè)輔導(dǎo)計(jì)劃
- 烏海市煤炭企業(yè)兼并重組工作方案
- 兒科業(yè)務(wù)學(xué)課件
- JJG(交通)054-2009 加速磨光機(jī)檢定規(guī)程-(高清現(xiàn)行)
- 2022年含麻黃堿類復(fù)方制劑培訓(xùn)試題和答案
- 玻璃水鉆行業(yè)需求分析及生產(chǎn)工藝流程
- 上科教版五年級(jí)上冊(cè)書法教案
- 中美個(gè)人所得稅征管與稅收流失現(xiàn)狀比較
- 可填充顏色的中國(guó)地圖,世界地圖,各省市地圖填色
- 第四軍醫(yī)大學(xué)擬招收博士后研究人員意見表
- 環(huán)保機(jī)制磚項(xiàng)目可行性研究報(bào)告寫作范文
- 中式烹調(diào)技藝PPT課件
評(píng)論
0/150
提交評(píng)論