版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
CH5選擇結(jié)構(gòu)的程序設(shè)計☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆CH4作業(yè):書(P80)34568911(1214學(xué)過switch以后做)§4.1關(guān)系運算符與關(guān)系表達式一、關(guān)系運算符2.關(guān)系運算符:3.優(yōu)先級:算術(shù)運算符與關(guān)系運算符的優(yōu)先級哪個高?與賦值運算符相比呢?即比較運算a>3若a為5,則成立,結(jié)果為“真”否則不成立,結(jié)果為“假”<、<=、>=、>、==、!=高低?4.結(jié)合率:左結(jié)合1.關(guān)系運算:算術(shù)運算符高于關(guān)系運算符關(guān)系運算符高于賦值運算符§4.1關(guān)系運算符與關(guān)系表達式用關(guān)系運算符將兩個表達式(算術(shù)、字符等)連接起來的有意義的式子如: x!=0 65=='A' a*a+b*b<y*y關(guān)系表達式的值: 真 假 非0 0 二、關(guān)系表達式設(shè)a=3,b=2,c=1,給出以下表達式的值:
a>b a>b==c b+c<a d=a>b a>b!=b運算結(jié)果用1表示"真"運算時將非0判斷為"真"§4.2邏輯運算符與邏輯表達式一、邏輯運算符3.優(yōu)先級與結(jié)合率1.邏輯運算2.邏輯運算符對邏輯值的運算與、或、非、異或……與、或、非&&||!&& 真 假真 真 假假 假 假|(zhì)| 真 假真 真 真假 真 假&&||!!(非)算術(shù)運算符關(guān)系運算符&&和||賦值運算符例如: a>b&&b>c相當于(a>b)&&(b>c) a!=b&&c相當于(a!=b)&&(c!=0) (!a)||(a>b)相當于
!a||a>b
5>3&&2||!8<4-2
相當于((5>3)&&2)||((!8)<(4-2))高低是用邏輯運算符將表達式連接起來的有意義的式子如果在執(zhí)行某個運算后整個表達式的值已經(jīng)能夠確定,則其他運算符不再執(zhí)行a&&b&&c若a為0a||b||c
當a非0時§4.2邏輯運算符與邏輯表達式二、邏輯表達式例如: a>b&&b>c (a>b)&&(b>c) a!=b&&c (a!=b)&&(c!=0) (!a)||(a>b) !a||a>b
5>3&&2||!8<4-2設(shè)a=3,b=2,c=1真真真真判斷某年是否閏年?閏年:年份能被4整除,但不能被100整除;或能被400整除year%4==0&&year%100!=0||year%400==0由數(shù)學(xué)式寫出C語句表達式:
|x|>2 x1+a并yb的定義域(x>=2||x<=1)&&x!=0(x-1)*(x-2)>=0&&x!=0
(x-1)(x-2)f(x)= xx>2||x<-2abs(x)>2x<=1+a&&y<=bif(a>0)printf("Aispositive.\n");P真假AB§4.3if語句一、if語句的格式1、條件執(zhí)行if(P)A條件邏輯表達式語句2、分支選擇if(P)AelseB條件邏輯表達式語句A語句Bif(x>y){ z=y; y=x; x=z;}if(a>0)printf("Aispositive.\n");elseprintf("Aisnotpositive.\n");A或B都只能是單一語句,可以是復(fù)合語句else部分不能獨立存在,它必定是if語句的一部分分析:①輸入x②判斷x值是否為0③根據(jù)x值,計算y值④輸出y值問題:如何實現(xiàn)②?③涉及選擇不同的計算公式,如何解決?#include<stdio.h>#include<math.h>voidmain(){ floatx,y;
printf("Enterx:");
scanf("%f",&x); if(x!=0.0) y=sin(x)/x; else y=1;
printf("x=%5.2f\ty=%7.4f\n",x,y);}例4.1計算函數(shù)值:sin(x)/x x=01 x=0y=輸入xx為0?
y=1y=sin(x)/x輸出y真假 if(x!=0.0) y=sin(x)/x; else y=1; if(x!=0.0) y=sin(x)/x; else y=1; if(x!=0.0) y=sin(x)/x; else y=1;關(guān)系運算選擇結(jié)構(gòu)#include<stdio.h>void
main(){floatx,y;
printf("enterx:");
scanf("%f",&x);y=1;if(x!=0)y=(x*5+1)/x;
printf("x=%5.1fy=%5.1f\n",x,y);}例5.2對于任意x,求函數(shù)值y=f(x)x·5+1x1y=x=0x=0#include<stdio.h>void
main(){floatx,y;
printf("enterx:");
scanf("%f",&x);if(x==0)y=1;elsey=(x*5+1)/x;
printf("x=%5.1fy=%5.1f\n",x,y);}輸入xx等于0?是 否y=1y=(x*5+1)/x輸出結(jié)果例4.3輸入一個整數(shù)a,判斷它是偶數(shù)還是奇數(shù)?#include<stdio.h>voidmain(){ inta;
printf("inputanumber:");
scanf("%d",&a); if(a%2==0)
printf("%disaneven\n",a); else
printf("%disanodd\n",a);}如何判斷?%例4.4任給a,b,c三個數(shù),按從大到小的順序輸出。
abt85
8
5
8分析:1)對于任意兩個數(shù)a,b:若a>b,則輸出a,b否則輸出b,a2)對于三個數(shù),有6中可能:a>b>c a>c>b b>a>c b>c>ac>a>b c>b>a3)使用交換法:①若a<b,則交換a和b②若a<c,則交換a和c
結(jié)果a最大③若b<c,則交換b和c
結(jié)果a>b>c交換方法:設(shè)a=8,b=5a=b;b=a;結(jié)果a=5,b=5t=a;a=b;b=t;t=aa=bb=t例4.4任給a,b,c三個數(shù),按從大到小的順序輸出。#include<stdio.h>void
main(){ inta,b,c,t;
printf("inputa,b,c:");
scanf("%d,%d,%d",&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("%d%d%d\n",a,b,c);}輸入a、b、c是a<b?否
a與b
交換a<c?是否
a與c
交換是b<c?否
c與b
交換輸出a、b、c§4.3if語句一、if語句的格式3、多分支選擇(elseif語句)if(P1)S1elseif(P2)S2┆elseif(Pn)SnelseSn+1
例4.5:評價學(xué)生成績(百分制)score≥90 優(yōu)秀score≥80 良好score≥70 中score≥60 及格score<60 不及格
P1真假S1P2
真假
S2
Pn
真假
SnSn+1例4.5:評價學(xué)生的成績(百分制)score≥90 優(yōu)秀score≥80 良好score≥70 中score≥60 及格score<60 不及格
P1真假S1P2
真假
S2
Pn
真假
SnSn+1#include<stdio.h>voidmain(){intscore;
printf("inputascore:");
scanf("%d",&score);if(score>=90) printf("優(yōu)秀\n");elseif(score>=80)printf("良好\n");elseif(score>=70)printf("中\(zhòng)n");elseif(score>=60)printf("及格\n");elseprintf("不及格\n");}例4.6設(shè)平面上一點M,其坐標為(x,y),若M落在圓心在坐標原點的單位圓上,則置key=1,落在圓外置key=2,落在圓內(nèi)置key=0。#include<math.h>#include<stdio.h>void
main(){ floatx,y,r; intkey;
printf("inputx,y:");
scanf("%f,%f",&x,&y); r=sqrt(x*x+y*y); if(r>1) key=2; elseif(r==1) key=1; else key=0;
printf("(%.1f,%.1f):%d\n",x,y,key);}分析:①求點M到原點的距離r②比較r和單位圓半徑的大小輸入x、yr=x2+y2r>1?
是否
r=1?key=2是否
key=1key=0輸出keyxy01M(x,y)rif(P1) if(P2)A elseBelse if(P3)C elseDP1真假P2P3真真假假ABCD§4.3if語句二、if語句的嵌套例4.7求平面上一點M(x,y)所在的相限。#include<stdio.h>void
main(){ floatx,y;
printf("inputx,y:");
scanf("%f,%f",&x,&y); if(x>0) if(y>0)printf("在第一相限\n"); elseprintf("在第四相限\n"); else if(y>0)printf("在第二相限\n"); elseprintf("在第三相限\n");}if(P1) if(P2)A elseBelse if(P3)C elseD§4.3if語句二、if語句的嵌套if(P1)Aelse if(P3)C elseDif(P1) if(P2)A elseBelseCif(P1) if(P2)Aelse if(P3)C elseDif(P1) if(P2)AelseC其它形式P1?P2?else應(yīng)與最近的if匹配if(P1){ if(P2)A}elseCif(P1){if(P2)A}else if(P3)C elseD例4.8判定某年是否閏年。閏年:年份year能能被400整除或被4整除,但不能被100整除;#include<stdio.h>void
main(){intyear,leap;
printf("Whichyear?");
scanf("%d",&year);if(year%400==0)leap=1;else if(year%4==0) if(year%100==0) leap=0; elseleap=1; elseleap=0;if(leap==1)
printf("%d年是閏年\n",year);else
printf("%d年不是閏年\n",year);}例4.8判定某年是否閏年。#include<stdio.h>void
main(){ intyear,leap;
printf("Whichyear?");
scanf("%d",&year); if(year%400==0)leap=1; else if(year%4==0) if(year%100==0) leap=0; elseleap=1; elseleap=0; if(leap==0)
printf("%d年是閏年\n",year); else
printf("%d年不是閏年\n",year);}
if(year%400==0)leap=1; else if(year%4==0) if(year%100==0) leap=0; elseleap=1; elseleap=0;if((year%4==0&&year%100!=0)||(year%400==0))leap=1;elseleap=0;閏年:年份year能被4整除,但不能被100整除;或能被400整除形式:e1?e2:e3執(zhí)行過程:①計算e1②若e1值為真,計算并返回e2的值;否則,計算并返回e3的值如: y=x==0?1:sin(x)/x等價于:if(x==0)y=1; elsey=sin(x)/x;結(jié)合方向:右結(jié)合優(yōu)先級:高于賦值運算,低于算術(shù)、關(guān)系、邏輯運算§4.4條件運算符與條件表達式右結(jié)合:a>b?a:b=c>b?c:b相當于
a>b?a:(b=c>b?c:b)例4.9讀程序,分析程序的功能找出a、b兩個數(shù)中的最大數(shù)#include<stdio.h>voidmain(){ inta,b,max;
printf("Entertwonumber:");
scanf("%d,%d",&a,&b); max=a>b?a:b;
printf("Themaxis%d\n",max);}printf("Themaxis%d\n",a>b?a:b);printf("Themaxis%d\n",max=a>b?a:b);#include<stdio.h>void
main(){ charch;
printf(“Pleaseinputaletter(a-zorA-Z):”);
ch=getchar();
ch=(ch>='A'&&ch<='Z')?ch+32:ch;
putchar(ch);
putchar('\n');}例4.10讀程序,分析程序的功能ch=(ch>=65&&ch<=90)?ch+32:ch;結(jié)論:任意輸入一個字符,如果是大寫字母,將其轉(zhuǎn)換成小寫字母ch
為大寫字母?ch=(ch>='A'&&ch<='Z')?ch+('a'-'A'):ch;亦稱多分支選擇語句。與if語句相比,程序結(jié)構(gòu)清晰、易讀。一、語句格式其中:表達式P一般為整型或字符型(整型)常量Ci的類型必須與表達式P
一致1.計算表達式P的值2.若與常量Ci
的值一致,則從語句Si
開始執(zhí)行,直到遇到break
語句或switch語句的“}”3.若與任何常量的值均不一致,則從default開始執(zhí)行;若無default語句,則直接執(zhí)行“}”后的程序注意:常量Ci
僅起標號作用常量Ci
的值必須惟一的,沒有先后次序多個case語句可共用一組執(zhí)行語句
default可以省略,也可以出現(xiàn)在其他位置二、執(zhí)行過程§4.5switch語句switch(P){ caseC1:S1 caseC2:S2 …. caseCn:Sn [default:Sn+1]}例4.11用switch語句重做例4.5(評價學(xué)生成績)#include<stdio.h>void
main(){intscore;
printf("inputascore:");
scanf("%d",&score);
switch(score/10){case10:case9:printf("優(yōu)\n");break;case8:printf("良\n");break;case7:printf("中\(zhòng)n");break;case6:printf("及格\n");break;default:printf("不及格\n");}}#include<stdio.h>main(){intscore;
printf("inputascore:");
scanf("%d",&score);
if(score>=90)printf("優(yōu)");elseif(score>=80)printf("良");elseif(score>=70)printf("中");elseif(score>=60)printf("及格");elseprintf("不及格\n");}例4.12運輸公司對用戶計算運費。收費標準隨距離s變化如下:
s<250km 不折扣
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年建筑安裝工程項目合同
- 力課件教學(xué)課件
- 2024年廣告代理合作協(xié)議
- 2024年工程咨詢與技術(shù)服務(wù)合作協(xié)議
- 2024年度公司用車管理協(xié)議
- 2024年度建筑工程設(shè)計、施工購銷合同
- 2024年度35kv高壓線路施工合同
- 2024年度某影視公司與某投資公司關(guān)于某電影項目融資的合同
- 公司年會的演講稿模板八篇
- 為世界無車日活動宣傳標語(155句)
- 民用無人機操控員執(zhí)照(CAAC)考試復(fù)習重點題及答案
- 疼痛科整體規(guī)劃和發(fā)展方案
- 2024年中國南水北調(diào)集團水網(wǎng)水務(wù)投資限公司及下屬單位社會招聘高頻難、易錯點500題模擬試題附帶答案詳解
- (新版)食品生產(chǎn)企業(yè)食品安全員理論考試題庫500題(含答案)
- 七年級語文上冊第13課《紀念白求恩》公開課一等獎創(chuàng)新教案
- 統(tǒng)編版語文六年級上冊第八單元大單元整體教學(xué)設(shè)計
- 教師個人業(yè)務(wù)學(xué)習筆記(41篇)
- 2025年高考語文復(fù)習備考復(fù)習策略講座
- 數(shù)學(xué)史上的三次數(shù)學(xué)危機
- 2024年水電暖安裝承包合同
- 缺乳(乳汁淤積)產(chǎn)婦的中醫(yī)護理
評論
0/150
提交評論