第09章、條件語句(理論課)_第1頁
第09章、條件語句(理論課)_第2頁
第09章、條件語句(理論課)_第3頁
第09章、條件語句(理論課)_第4頁
第09章、條件語句(理論課)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

使用C語言開發(fā)簡單應(yīng)用第九章條件語句上一章內(nèi)容回顧算法算法的表示方法自然語言傳統(tǒng)流程圖N-S流程圖偽代碼計(jì)算機(jī)語言各種表示方法的比較結(jié)構(gòu)化程序設(shè)計(jì)方法文檔和注釋的重要性2/32本章學(xué)習(xí)目標(biāo)掌握if語句的使用掌握switch語句的使用理解break語句和goto語句了解語句的嵌套和嵌套深度了解程序語句的書寫規(guī)范3/32內(nèi)容進(jìn)度C語句概述if語句if語句嵌套if語句使用和書寫規(guī)則switch語句goto語句4/32C語句概述C語句:以“;”作分隔符,編譯后產(chǎn)生機(jī)器指令。C語句分類表達(dá)式語句:表達(dá)式加分號構(gòu)成空語句:;程序控制語句(9種):復(fù)合語句:用{}括起來的一組語句一般形式:{[數(shù)據(jù)說明部分;]

執(zhí)行語句部分;

}說明:“}”后不加分號語法上和單一語句相同可以嵌套5/32total=total+limit;a=3;func();printf(“Hello,world!\n”);分支if()~else~switch循環(huán)for()~while()~do~while()輔助控制continuebreakgotoreturn內(nèi)容進(jìn)度C語句概述if語句if語句嵌套if語句使用和書寫規(guī)則switch語句goto語句6/32if語句第一種形式:if(表達(dá)式)

語句7/32#include<stdio.h>voidmain(){inta=0;intb=0;intmax=0;printf("輸入兩個數(shù)據(jù):\n");scanf("%d%d",&a,&b);max=a;if(max<b){max=b;}printf("大數(shù)是%d\n",max);}if語句第二種形式:

if(表達(dá)式)

語句1 else

語句28/32#include<stdio.h>voidmain(){inta=0;intb=0;intmax=0;printf("輸入兩個數(shù)據(jù):\n");scanf("%d%d",&a,&b);if(a<b){ max=b;}else{ max=a;}printf("大數(shù)是%d\n",max);}if語句第三種形式:

if-else-if語句,其一般形式為:

if(表達(dá)式1)

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

語句2 else if(表達(dá)式3)

語句3 ... else if(表達(dá)式m)

語句m else

語句n9/32if語句第三種形式:10/32#include<stdio.h>voidmain(){charc;printf("請輸入一個字符:\n");scanf("%c",&c);if(c<32)printf("輸入的是控制字符\n");elseif(c>='0'&&c<='9')printf("輸入的是數(shù)字\n");elseif(c>='A'&&c<='Z')printf("輸入的是大寫字母\n");elseif(c>='a'&&c<='z')printf("輸入的是小寫字母\n");elseprintf("輸入的是其它字符\n");}if語句注意問題:if關(guān)鍵字之后的表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是其他表達(dá)式,如賦值表達(dá)式等,甚至可以是一個變量或常量。如果要想在滿足條件時執(zhí)行一組(多個)語句,則必須把這一組語句用{}括起來組成一個復(fù)合語句,但要注意的是在}之后不能再加分號。11/32if(a==b&&x==y)printf("a=b,x=y");if(3)printf("OK");if('a')printf("%d",'a');if(x)if(x!=0)if(!x)if(x==0)例:考慮下面程序的輸出結(jié)果。

#include<stdio.h>voidmain(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}CompileError!內(nèi)容進(jìn)度C語句概述if語句if語句嵌套if語句使用和書寫規(guī)則switch語句goto語句12/32If語句嵌套一般形式舉例:13/32if(表達(dá)式)if(表達(dá)式)

語句

else

語句elseif(表達(dá)式)

語句

else

語句內(nèi)嵌if語句內(nèi)嵌if語句if(表達(dá)式)if(表達(dá)式)

語句

else

語句內(nèi)嵌if語句if(表達(dá)式)

語句elseif(表達(dá)式)

語句內(nèi)嵌if語句if(表達(dá)式)if(表達(dá)式)

語句內(nèi)嵌if語句If語句嵌套應(yīng)用舉例:14/32#include<stdio.h>voidmain(){inta=0;intb=0;printf("請輸入兩個整型數(shù)據(jù)A和B:\n");scanf("%d%d",&a,&b);if(a!=b)if(a>b)printf("A>B\n");elseprintf("A<B\n");elseprintf("A=B\n");}if-else配對原則如果缺省{},else語句總是與它前面的最近的未配對的if配對。15/32#include<stdio.h>voidmain(){inta=0;intb=0;printf("請輸入兩個整型數(shù)據(jù)A和B:\n");scanf("%d%d",&a,&b);if(a!=b)if(a>b)printf("A>B\n");elseprintf("A<B\n");elseprintf("A=B\n");}if(……)if(……)if(……)else…...else…...else…...if-else配對原則16/32例:

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”);實(shí)現(xiàn)if-else正確配對方法:加{}應(yīng)用舉例例1:考慮下面程序輸出結(jié)果。17/32#include<stdio.h>voidmain(){ intx=100; inta=10; intb=20; intv1=5; intv2=0; if(a<b) if(b!=15) if(!v1) x=1; else if(v2)x=10; printf("%d\n",x);}結(jié)果:100應(yīng)用舉例例2:編程實(shí)現(xiàn)如下功能:求一個數(shù)的絕對值。18/32#include<stdio.h>voidmain(){ intx=0; inty=0; printf("Enteraninteger:"); scanf("%d",&x); y=x; if(y<0) y=-y; printf("integer:%d--->absolutevalue:%d\n",x,y);}運(yùn)行:Enteraninteger:-12integer:-12--->absolutevalue:12嵌套深度關(guān)于嵌套深度,不同的編碼規(guī)范和標(biāo)準(zhǔn)的規(guī)定不同,有的定義為5~7層,其他定義或多或少,不管定義數(shù)量多少,其目的都是相同的,就是為了使代碼容易理解、維護(hù)。嵌套的深度決定了程序的復(fù)雜程度,可以說,代碼越簡單,其可靠性也就越高,所以在編碼時,在實(shí)現(xiàn)功能和滿足要求的前提下,應(yīng)盡量減少嵌套深度,使代碼簡化。19/32內(nèi)容進(jìn)度C語句概述if語句if語句嵌套if語句使用和書寫規(guī)則switch語句goto語句20/32if語句使用和書寫規(guī)則當(dāng)布爾表達(dá)式與一個常值進(jìn)行比較時,一般把常值放在前面。有多個if語句嵌套時,要層層對齊,每一層的真假分支使用括號括起來并對齊。21/32if(2!=(a+b)%6)

if(x>y){}else{if(y>z){}else{}}if語句使用和書寫規(guī)則布爾表達(dá)式中有多個邏輯“與”判斷條件時,只要其中一個條件不滿足則該表達(dá)式的值就是“假”,注意在else分支中,不能假定某個邏輯表達(dá)式為“真”而進(jìn)行處理,導(dǎo)致錯誤。布爾表達(dá)式中有多個邏輯“或”判斷條件時,只要其中一個條件滿足則該表達(dá)式的值就是“真”,注意不能假定某個邏輯表達(dá)式為“真”而進(jìn)行處理,導(dǎo)致錯誤。22/32if(0!=a&&0!=c){}else{ x=y/c;}if(0!=a||0!=c){

x=y/c;}if語句使用和書寫規(guī)則不可將布爾變量直接與TRUE、FALSE或者1、0進(jìn)行比較。 假設(shè)布爾變量名字為flag,它與零值比較的標(biāo)準(zhǔn)if語句如下:

其它的用法都屬于不良風(fēng)格,例如:23/32if(flag)/*表示flag為真*/if(!flag)/*表示flag為假*/if(flag==TRUE)if(1==flag)if(flag==FALSE)if(flag==0)if語句使用和書寫規(guī)則不可將浮點(diǎn)變量用“==”或“!=”與其它變量或數(shù)字比較,應(yīng)設(shè)法轉(zhuǎn)化成“>=”或“<=”形式。

假設(shè)浮點(diǎn)變量的名字為x,應(yīng)當(dāng)將

轉(zhuǎn)化為:24/32if(x==0.0)/*隱含錯誤的比較*/if((x>=-EPSINON)&&(x<=EPSINON))內(nèi)容進(jìn)度C語句概述if語句if語句嵌套if語句使用和書寫規(guī)則switch語句goto語句25/32switch語句一般形式:

switch(表達(dá)式){

case常量表達(dá)式1: 語句1 break; case常量表達(dá)式2: 語句2 break; ... case常量表達(dá)式n: 語句n break; default:

語句n+1

}26/32switch語句流程圖:27/32switch表達(dá)式語句組1語句組2語句組n語句組…...E1E2Endefaultcaseswitch語句說明:E1,E2,…,En是常量表達(dá)式,且值必須互不相同語句標(biāo)號作用,通常用break跳出多個case可共用一組執(zhí)行語句case后可包含多條語句,且不必加{}可嵌套28/32case‘A’:case‘B’:case‘C’: printf(“score>60\n”);break;switch(score){ case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}switch語句應(yīng)用舉例:29/32#i

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論