C語言程序設(shè)計 課件 第3章 選擇結(jié)構(gòu)_第1頁
C語言程序設(shè)計 課件 第3章 選擇結(jié)構(gòu)_第2頁
C語言程序設(shè)計 課件 第3章 選擇結(jié)構(gòu)_第3頁
C語言程序設(shè)計 課件 第3章 選擇結(jié)構(gòu)_第4頁
C語言程序設(shè)計 課件 第3章 選擇結(jié)構(gòu)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章選擇結(jié)構(gòu)第三章選擇結(jié)構(gòu)目錄§3.1語句§3.2if語句§3.3switch語句§3.4小結(jié)

§3.1語句一個程序由若干語句構(gòu)成,語句的作用是向計算機系統(tǒng)發(fā)出操作指令,要求執(zhí)行相應(yīng)的操作。表達(dá)式語句空語句函數(shù)調(diào)用語句復(fù)合語句C語句控制語句

§3.1語句①if()…else…(條件語句)②for()…(循環(huán)語句)③while()…(循環(huán)語句)④do…while()(循環(huán)語句)⑤continue(結(jié)束本次循環(huán)語句)⑥break(中止執(zhí)行switch或循環(huán)語句)⑦switch(多分支選擇語句)⑧return(從函數(shù)返回語句)⑨goto(轉(zhuǎn)向語句,在結(jié)構(gòu)化程序中基本不用goto語句)()表示括號中是一個判別條件…表示內(nèi)嵌的語句控制語句表達(dá)式語句空語句函數(shù)調(diào)用語句復(fù)合語句C語句

§3.1語句函數(shù)調(diào)用語句由一個函數(shù)調(diào)用加一個分號構(gòu)成。其中printf(“HelloWorld!”)是一個函數(shù)調(diào)用,加一個分號成為一個語句??刂普Z句表達(dá)式語句空語句函數(shù)調(diào)用語句復(fù)合語句C語句printf(“HelloWorld!

");

§3.1語句函數(shù)調(diào)用語句

表達(dá)式語句由一個表達(dá)式加一個分號構(gòu)成

最典型的是由賦值表達(dá)式構(gòu)成一個賦值語句。例如:a=3是一個賦值表達(dá)式,而a=3;是一個賦值語句。

任何表達(dá)式都可以加上分號而成為語句,包括算術(shù)運算表達(dá)式、關(guān)系運算表達(dá)式、邏輯運算表達(dá)式等。控制語句表達(dá)式語句空語句復(fù)合語句C語句

§3.1語句表達(dá)式語句函數(shù)調(diào)用語句;只有一個分號的語句即為空語句??梢杂脕碜鳛榱鞒痰霓D(zhuǎn)向點(流程從程序其他地方轉(zhuǎn)到此語句處);或作為循環(huán)語句中的循環(huán)體,表示循環(huán)體什么也不做。例如:while((ch=getchar())=='');

該語句表示將跳過輸入字符串中的空白字符,直到遇到非空白字符為止??刂普Z句空語句復(fù)合語句C語句

§3.1語句表達(dá)式語句函數(shù)調(diào)用語句用{}括起來的語句稱為復(fù)合語句(又稱語句塊)。復(fù)合語句常用在選擇結(jié)構(gòu)或循環(huán)結(jié)構(gòu)中,此時程序需要連續(xù)執(zhí)行一組語句。控制語句空語句復(fù)合語句C語句{

x=3; printf(“x=%d",x);}

§3.1語句Tips:①

C語言中每一條語句在最后必須出現(xiàn)分號,分號是語句中不可缺少的組成部分,而不是兩個語句間的分隔符號;②賦值表達(dá)式可以包括在其他表達(dá)式中,但賦值語句不能包含在其他語句和表達(dá)式中;③空語句可用作循環(huán)語句中的循環(huán)體,表示循環(huán)體什么也不做;④復(fù)合語句是用一對大括號“{”和“}”將語句括起來完成了一系列工作。

第三章選擇結(jié)構(gòu)目錄§3.1語句§3.2if語句§3.3switch語句§3.4小結(jié)§3.2if語句3.2.1單分支if結(jié)構(gòu)3.2.2雙分支if結(jié)構(gòu)3.2.3多分支if結(jié)構(gòu)3.2.4if嵌套§3.2if語句§3.2.1單分支if結(jié)構(gòu)格式:if(表達(dá)式)

語句段執(zhí)行:

先計算表達(dá)式的值,如果表達(dá)式的值為真,執(zhí)行后面的語句段;否則不執(zhí)行,即跳過該語句段,繼續(xù)執(zhí)行后面的語句。流程:

§3.2if語句例3.1三個數(shù)字排序。

§3.2if語句輸入三個整數(shù)a,b,c,要求將輸出的數(shù)據(jù)按從大到小排序后輸出。#include<stdio.h>intmain(){inta,b,c,t;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);return0;}if(a<b)t=a,a=b,b=t;如何對4個數(shù)進行排序?5個數(shù)呢?思考§3.2.2雙分支if結(jié)構(gòu)格式:if(表達(dá)式)

語句段else

語句段2執(zhí)行:

先計算表達(dá)式的值,如果表達(dá)式的值為真(非0),執(zhí)行語句段1;否則執(zhí)行語句段2。流程:

§3.2if語句魚與熊掌不可兼得例3.2求兩個數(shù)中的較大者。

§3.2if語句輸入兩個整數(shù)a,b,求其中的較大者。#include<stdio.h>intmain(){inta,b,c;scanf("%d%d",&a,&b);if(a<b)c=b;elsec=a;printf("%d\n",c);return0;}輸入三個數(shù),輸出其中的最小數(shù),要求采用if…else雙分支結(jié)構(gòu)來實現(xiàn)。思考

§3.2if語句Tips:①if…else語句是根據(jù)表達(dá)式的真假來從語句段1和語句段2中選擇一路來執(zhí)行;②在雙分支結(jié)構(gòu)中,else必須與if配對使用,構(gòu)成if-else語句,實現(xiàn)雙分支選擇;③語句段1和語句段2可以是一條語句,也可以是多條語句,甚至是一個控制結(jié)構(gòu);如果是多條語句,需要用“{”和“}”括起來,形成復(fù)合語句?!?.2.3多分支if結(jié)構(gòu)格式:if(表達(dá)式1)

語句1

else

if(表達(dá)式2)

語句2

else

if(表達(dá)式3)

語句3......else

if(表達(dá)式n-1)

語句n-1else

語句n

§3.2if語句執(zhí)行:

依次計算表達(dá)式i(i=1,2,…,n-1)的值,當(dāng)表達(dá)式i為真時,執(zhí)行與之相關(guān)的語句段i,并以此結(jié)束整個多分支結(jié)構(gòu)的執(zhí)行。流程:例3.3判斷字符。

§3.2if語句從鍵盤輸入一個字符,根據(jù)字符的ASCI值,判斷它是數(shù)字、大寫字母、小寫字母,還是其他字符,并輸出說明結(jié)果。#include<stdio.h>intmain(){charc;printf("請輸入一個字符:");c=getchar();if(c>='0'&&c<='9')printf("這是一個數(shù)字字符。\n");elseif(c>='A'&&c<='z')printf("這是一個大寫字母。\n");elseif(c>='a'&&c<='z')printf("這是一個小寫字母。\n");elseprintf("這是一個其他字符。\n");return0;}輸入一個字母(大寫或小寫),輸出其對應(yīng)的另一字母(小寫或大寫)。思考§3.2.4if嵌套結(jié)構(gòu)格式:if(表達(dá)式1)if(表達(dá)式2)

語句1//表達(dá)式1為真,且表達(dá)式2也為真時執(zhí)行else

語句2//表達(dá)式1為真,且表達(dá)式2為假時執(zhí)行else

語句3//表達(dá)式1為假時執(zhí)行

§3.2if語句在if…else結(jié)構(gòu)中語句段1和語句段2既可以是一個簡單的語句,也可以是另一個if…else結(jié)構(gòu),從而形成if…else語句的嵌套。if(表達(dá)式1)語句1//表達(dá)式1為真時執(zhí)行

elseif(表達(dá)式2)語句2//表達(dá)式1為假,且表達(dá)式2為真時執(zhí)行

else語句3//表達(dá)式1為假,且表達(dá)式2為假時執(zhí)行

或如下結(jié)構(gòu):if(表達(dá)式1)

if(表達(dá)式2)

語句1

//表達(dá)式1為真,且表達(dá)式2也為真時執(zhí)行

else語句2

//表達(dá)式1為真,且表達(dá)式2為假時執(zhí)行

else

if(表達(dá)式3)

語句3

//表達(dá)式1為假,且表達(dá)式3為真時執(zhí)行

else語句4

//表達(dá)式1為假,且表達(dá)式3也為假時執(zhí)行

例3.4求一元二次方程的根。

§3.2if語句

§3.2if語句#include<stdio.h>#include"math.h"intmain(){doublea,b,c,delta,x1,x2,y1,y2,t;scanf("%lf%lf%lf",&a,&b,&c);if(fabs(a)<1e-6)//判斷a是否相當(dāng)小printf("輸入的系數(shù)不能構(gòu)成二次方程!");//a=0時不是二次方程else{ delta=b*b-4*a*c; if(fabs(delta)<1e-6)//△=0時有兩個相等的根 printf("x1=x2=%.5lf\n",-b/(2*a));elseif(delta>0)//△>0時有兩個實數(shù)根? { x1=(-b+sqrt(delta))/(2*a);//sqrt函數(shù)用來求出參數(shù)的平方根 x2=(-b-sqrt(delta))/(2*a);if(x1<x2)//交換兩個實根 t=x1,x1=x2,x2=t; printf("x1=%.5lf;x2=%.5lf",x1,x2); } else//△<0時有兩個復(fù)數(shù)跟 { x1=-b/(2*a); y1=sqrt(-delta)/(2*a); y2=-sqrt(-delta)/(2*a);if(y1<y2)//交換兩個虛根 t=y1,y1=y2,y2=t; printf("x1=%.5lf",x1); if(y1>0) printf("+%.5lfi;x2=%.5lf",y1,x1); else printf("%.5lfi;x2=%.5lf",y1,x1); if(y2>0) printf("+%.5lfi",y2); else printf("%.5lfi",y2); }}return0;}下述分支結(jié)構(gòu)中,語句2的執(zhí)行條件是什么?

if(表達(dá)式1)

if(表達(dá)式2)

語句1

else

語句2

思考嚴(yán)密、求精工匠精神第三章選擇結(jié)構(gòu)目錄§3.1語句§3.2if語句§3.3switch語句§3.4小結(jié)格式:switch(表達(dá)式)

{case常量表達(dá)式1:語句段1[break;]

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

§3.3switch語句執(zhí)行:先計算switch后面表達(dá)式的值,然后逐個與case中的常量表達(dá)式的值比較,如果二者相等,執(zhí)行相應(yīng)case后面的語句段,如果case語句段后有break語句,執(zhí)行完語句段后則控制跳出switch語句,執(zhí)行switch之后的語句;如果case語句段后沒有break語句,執(zhí)行完語句段后將繼續(xù)往下執(zhí)行后面所有case后的語句,直到有break或者遇到switch語句的“}”終止該結(jié)構(gòu)。不相等時,繼續(xù)執(zhí)行下一個case結(jié)構(gòu)進行判斷。若表達(dá)式的值與所有case中的表達(dá)式的值均不相等時,執(zhí)行default后面的語句。流程:

§3.3switch語句例3.5等級成績。

§3.3switch語句學(xué)院的考試采用等級制,即將百分制轉(zhuǎn)換為A、B、C、D、E5個等級,設(shè)成績?yōu)閄,則90≤X≤100為A,80≤X<90為B,70≤X<80為C,60≤X<70為D,X<60為E。編寫一個程序,將輸入的分?jǐn)?shù)轉(zhuǎn)換成A、B、C、D、E5個等級。#include<stdio.h>intmain(){floatscore;scanf("%d",&score);switch((int)score/10){ case10: case9:printf("A");break; case8:printf("B");break; case7:printf("C");break; cas

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論