




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第五章 選擇結(jié)構(gòu)的程序設(shè)計(jì)1本章要點(diǎn)關(guān)系運(yùn)算符和關(guān)系表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式 if語句switch語句簡單應(yīng)用第5章 選擇結(jié)構(gòu)的程序設(shè)計(jì)2第節(jié) 第節(jié)第節(jié)第節(jié) if語句 switch語句 goto語句程序舉例第5章 選擇結(jié)構(gòu)的程序設(shè)計(jì)3if語句是控制程序執(zhí)行選擇結(jié)構(gòu)的語句是構(gòu)成結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)之一根據(jù)學(xué)生分?jǐn)?shù)判斷是否及格?根據(jù)學(xué)生分?jǐn)?shù)如何進(jìn)行分級?自然語言:如果 那么 否則C語言:分支語句如何解決?5-1 if語句4一、if語句的三種基本形式功能:判斷條件為真時(shí)執(zhí)行語句否則跳過語句5-1 if語句(續(xù))語句格式:if (條件) 語句組;例: if (ab) x=a;1. 單選擇i
2、f語句語句N條件Y條件可以是關(guān)系式或邏輯式55-1 if語句(續(xù))2. 雙選擇if語句語句格式:if (條件) 語句組1; else 語句組2;條件 語句1 語句2YN功能:判斷條件為真時(shí)執(zhí)行語句組1否則執(zhí)行語句組26if(a60) printf(“及格n”);else printf(“不及格n”);main() int a; scanf(“%d”,&a); if (a60) printf(“%dn”,a); 5-1 if語句(續(xù))例輸出不及格的成績7求a和b兩數(shù)中較大的一個(gè)#include main( )int a,b,max; printf(Input a and b=); scanf(%
3、d%d,&a, &b); max=a; if ( maxb ) max=b;printf(The max of a and b : %dn,max);maxbmax=bYN5-1 if語句(續(xù))例8#include main( ) int a,b,max; printf(Input a and b=); scanf(%d%d,&a, &b); /* input number a and b */ if ( ab ) max=a; /*如果ab,則將a=max */ else max=b; /* 否則, b=max */ printf(The max of a and b : %dn, max)
4、;ab?max=bmax=aYN5-1 if語句(續(xù))求a和b兩數(shù)中較大的一個(gè)例95-1 if語句(續(xù)) if (ab) x=a; else x=b; 必須有分號復(fù)合語句的表示: if (ab) x=a; printf(“a=%3dn”,x); else x=b; printf(“b=%3dn”,x); 下列程序是什么結(jié)構(gòu)?main()int a=2,b=1; if (ab) a+=+b;b*=a+b+; printf(“%d,%dn”,a,b);運(yùn)行結(jié)果是:4,13不能有分號10功能:從多組語句中選擇滿足條件的語句組執(zhí)行。3. 多選擇的i f結(jié)構(gòu)5-1 if語句(續(xù))語句格式:if (條件1
5、) 語句1;else if (條件2) 語句2;else if (條件3) 語句3;else if (條件m) 語句m;else 語句n;語句1N條件1Y條件2條件nYY語句2語句3語句nNN多分支11有關(guān)if語句的說明 條件后面不加分號 語句之后有分號 else不是語句,不能單獨(dú)使用 當(dāng)if后有多個(gè)執(zhí)行語句時(shí),必須用 將多 個(gè)語句括起來,構(gòu)成一個(gè)復(fù)合語句,而 之外不必有分號。5-1 if語句(續(xù))12從鍵盤輸入一個(gè)整數(shù)a,按其值的大小分別輸出a=10;10a=100;100a1000main() int a; scanf(“%d”,&a); if (a10) printf(“%d=10n”,
6、a); else if (a=100 ) printf(“10%d=100n”,a); else if( a1000) printf(“100%d1000n”,a);5-1 if語句(續(xù))例從四個(gè)條件中選擇一個(gè)為真的執(zhí)行135-1 if語句(續(xù))按分?jǐn)?shù)統(tǒng)計(jì)學(xué)分,將分?jǐn)?shù)分為五個(gè)分?jǐn)?shù)段,分別是:90分以上、8090、7080、6070、60以下,對應(yīng)的學(xué)分系數(shù)分別是:1.3、1.2、1.1、1、0。程序段如下:例if (fs=90) xf=kc*1.3;else if (fs=80) xf=kc*1.2;else if (fs=70) xf=kc*1.1;else if (fs=60) xf=kc
7、;else xf=0.0;printf(“xf=%f”,xf);14銀行存款本金計(jì)算5-1 if語句(續(xù))例main( ) int year; float money,rate,total; /* 本金 月利率 本利合計(jì)*/ printf(Input money and year =?); scanf(%f%d, &money, &year);/* 輸入本金和年 */ if ( year = 1 ) rate=0.0063; /* 根據(jù)年限定利率 */ else if ( year = 2 ) rate=0.0066; else if ( year = 3 ) rate=0.0069; els
8、e if ( year = 5 ) rate=0.0075; else if ( year = 8 ) rate=0.0084; else rate=0.0; total = money + money * rate *12 * year; printf( Total = %.2fn, total);15二、 if語句的嵌套格式:if(表達(dá)式) if( 表達(dá)式1) 語句11 else 語句12 else if (表達(dá)式2) 語句21 else 語句22在一個(gè)if結(jié)構(gòu)中,包含一個(gè)或多個(gè)if結(jié)構(gòu)判斷表達(dá)式的值,若為非0,再判斷表達(dá)式1的值,非0執(zhí)行語句11,否則執(zhí)行語句12若表達(dá)式的值為0,再判斷
9、表達(dá)式2的值,非0執(zhí)行語句21,否則執(zhí)行語句22功能:5-1 if語句(續(xù))外if內(nèi)嵌if165-1 if語句(續(xù))下列程序段表示的數(shù)學(xué)式? y=-1; if (x!=0) if (x0) y=2*sin(x); else y=0;else總是與最近的if 配對! 程序段表示的數(shù)學(xué)式1: 0 (x0)討論:給第二個(gè)if行加 后 表示的數(shù)學(xué)式?程序段表示的數(shù)學(xué)式2: -1 (x0)數(shù)學(xué)式1程序可表示為:Y=-1;if (x!=0) if (x0) y=2*sin(x); else y=0;分層次17在if語句的“語句1”或“語句2”中又包含著if語句main( ) int x, y; print
10、f (Enter integer X and Y:); scanf (%d%d, &x, &y); if ( x != y ) if ( x y ) printf (XYn); else printf (Xb)?a:b 當(dāng) a=9,b=5時(shí),x=9條件運(yùn)算要求有三個(gè)運(yùn)算分量,并且不論條件是否成立,都必須是為同一個(gè)變量賦值5-1 if語句(續(xù))193 . 條件運(yùn)算符的優(yōu)先級 高于賦值,低于其他4 . 結(jié)合性:從右向左z=(ab)?a:(ad)?c:d5. 數(shù)據(jù)類型可以不同xy?a:b5-1 if語句(續(xù))if語句與條件運(yùn)算的關(guān)系例求一個(gè)數(shù)字的絕對值205-1 if語句(續(xù))if ( y0 )x=
11、-y;elsex=y;(y0)?x=-y:x=y;等價(jià)等價(jià)x = (y=80) swicth (int)(fs/10) case 8: n8=+n8;break; case 9: n9=+n9;break; case 10: n0=+n0;break; default :printf(“ errorn”); else n1=+n1; printf (“ %d%d%d%dn”,n1,n8,n9,n0);程序可改為:main()int n1=0,n8=0,n9=0,n0=0; float fs; scanf(“ %f”,&fs); swicth (int)(fs/10) case 8: n8=+n
12、8;break; case 9: n9=+n9;break; case 10: n0=+n0;break; default :n1=+n1; printf (“ %d%d%d%d”,n1,n8,n9,n0); 265-3 goto語句goto語句格式 goto 語句標(biāo)號 語句標(biāo)號: 功能:無條件轉(zhuǎn)向語句標(biāo)號所標(biāo)識(shí)的語句執(zhí)行 int a;p: scanf(“%d”,&a); if (a60) goto p; printf(“%dn”,a);例 !不提倡使用GOTO語句27例c4-25-4 應(yīng)用程序舉例閏年:能夠被4整除且不能被100整除的年份 或 能夠被400整除的年份 例如:1996年是閏年
13、1900年是平年 2000年是閏年判斷閏年的C語言公式y(tǒng)ear%4=0 & year%100!=0 | year%400=0 當(dāng)year=1996時(shí),結(jié)果為1 當(dāng)year=1997時(shí),結(jié)果為0 當(dāng)year=1900時(shí),結(jié)果為0 當(dāng)year=2000時(shí),結(jié)果為1 若為閏年:結(jié)果為1若為平年:結(jié)果為0如何處理大月、小月、平月?如何判斷閏年?例:輸入年, 月,計(jì)算該月有多少天?分析28Main() int year,month,days; printf(“Enter year&monthn”); scanf(“%d,%d”,&year,&month); switch(month) case 1: c
14、ase 3: case 5: case 7: case 8:C程序?yàn)椋?-4 應(yīng)用程序舉例case 10: /* 處理“大”月 */case 12: days=31;break;case 4:case 6:case 9: /* 處理“小”月 */case 11: days=30;break;295-4 應(yīng)用程序舉例(續(xù))case2: /* 處理平月 */ if(year%4=0)&(year%100!=0)|(year%400)=0) days=29; /* 如果是閏年 */ else days=28; break; /* 不是閏年 */default: /* 月份錯(cuò)誤 */ printf(“
15、Enter error!n”);days=0; break; if (days!=0)printf(“%dn”,days) 305-4 應(yīng)用程序舉例(續(xù))#include main( )int year; float money,rate,total; /* 本金,月利率,本利合計(jì)*/ printf(Input money and year =?); scanf(%f%d, &money, &year);/* 輸入本金和存款年限 */ switch ( year ) /*根據(jù)年限定利率*/case 1: rate=0.0063; break; case 2:rate=0.0066; break; case 3:rate=0.0069; break; case 5:rate=0.0075; break; case 8:rate=0.0084; break; default:rate=0; total = money + money * rate *12 * year; printf( Total = %.2fn, total);例c4-3例:計(jì)算存款本利。采用switch編寫31
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新工科背景下智能紡織品設(shè)計(jì)課程建設(shè)探索
- 2025至2030年中國電子復(fù)印白板行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國球型鉸鏈行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國特大黑色透明鋼纜行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國淋浴水龍頭行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國洗瓶機(jī)旋轉(zhuǎn)噴沖裝置行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國氨基透明烘干漆行業(yè)投資前景及策略咨詢報(bào)告
- 高中地理學(xué)科整合的背景與跨學(xué)科教育的必要性
- 2025至2030年中國機(jī)灌設(shè)備行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國晶閘管控制直流弧焊機(jī)行業(yè)投資前景及策略咨詢報(bào)告
- 思辨與創(chuàng)新智慧樹知到期末考試答案章節(jié)答案2024年復(fù)旦大學(xué)
- 手術(shù)室-標(biāo)準(zhǔn)側(cè)臥位擺放
- 線性代數(shù)智慧樹知到期末考試答案章節(jié)答案2024年廣西師范大學(xué)
- 中藥藥理學(xué)(中國藥科大學(xué))智慧樹知到期末考試答案2024年
- 夫妻賣房一方不能到場委托書
- MOOC 算法設(shè)計(jì)與分析-武漢理工大學(xué) 中國大學(xué)慕課答案
- (正式版)JBT 9229-2024 剪叉式升降工作平臺(tái)
- 江蘇大學(xué)機(jī)械工程學(xué)院人才培養(yǎng)調(diào)查問卷(校友卷)
- 義務(wù)教育均衡發(fā)展督導(dǎo)評估匯報(bào)
- 全球商用制冷冷凍設(shè)備行業(yè)調(diào)研分析報(bào)告2024年
- 肺癌患者的健康宣教課件
評論
0/150
提交評論