第3章 分支結(jié)構(gòu)程序設(shè)計(jì)_第1頁(yè)
第3章 分支結(jié)構(gòu)程序設(shè)計(jì)_第2頁(yè)
第3章 分支結(jié)構(gòu)程序設(shè)計(jì)_第3頁(yè)
第3章 分支結(jié)構(gòu)程序設(shè)計(jì)_第4頁(yè)
第3章 分支結(jié)構(gòu)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語(yǔ)言程序設(shè)計(jì)(第3版)張磊編著清華大學(xué)出版社C語(yǔ)言程序設(shè)計(jì)第3章分支結(jié)構(gòu)程序設(shè)計(jì)《C語(yǔ)言程序設(shè)計(jì)》(第3版)張磊編著

21世紀(jì)高等學(xué)校規(guī)劃教材清華大學(xué)出版社C語(yǔ)言程序設(shè)計(jì)(第3版)張磊編著清華大學(xué)出版社分支結(jié)構(gòu)的引入例3-1輸入一個(gè)學(xué)生的兩門課的成績(jī),若平均成績(jī)不低于90分,則顯示“優(yōu)等生”,否則顯示“要加油?。 ?。1.程序/*programe3-1.c*/#include<stdio.h>voidmain(){inta1,a2,ave;printf("輸入兩門課的成績(jī):");scanf("%d,%d",&a1,&a2);ave=(a1+a2)/2;

if(ave>=90)/*分支控制*/printf("優(yōu)等生!\n");

elseprintf("要加油啊!\n");}2.程序解析程序中的if-else命令用于實(shí)現(xiàn)分支控制,分支處理的條件是“ave>=90”。當(dāng)ave>=90成立時(shí),執(zhí)行語(yǔ)句“printf(”優(yōu)等生!\n“);”,輸出字符串“優(yōu)等生!”;否則,執(zhí)行語(yǔ)句“printf(”要加油啊!\n“);”,輸出字符串“要加油啊!”。第一次執(zhí)行結(jié)果輸入兩門課的成績(jī):88,96優(yōu)等生!第二次執(zhí)行結(jié)果輸入兩門課的成績(jī):77,85要加油啊!C語(yǔ)言程序設(shè)計(jì)(第3版)張磊編著清華大學(xué)出版社第3章分支結(jié)構(gòu)程序設(shè)計(jì)一、關(guān)系運(yùn)算符和關(guān)系表達(dá)式二、邏輯運(yùn)算符和邏輯表達(dá)式三、實(shí)現(xiàn)選擇結(jié)構(gòu)的控制語(yǔ)句四、選擇結(jié)構(gòu)程序舉例關(guān)系運(yùn)算符<<=>>===!=(6種)優(yōu)先級(jí)賦值<關(guān)系(后2<前4)<算術(shù)關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子.算術(shù)、關(guān)系、邏輯、賦值、常量。值真(1)假(0)舉例已知:(a=3b=2c=1d=0)0a==b>cd==a>b+c1d=a>b+c?一、關(guān)系運(yùn)算符和關(guān)系表達(dá)式0<a<201關(guān)系運(yùn)算符含義實(shí)例>大于ave>90>=大于等于ave>=90<小于ave<90<=小于等于ave<=90==等于ave==90!=不等于ave!=90邏輯運(yùn)算符

!(邏輯非)&&(邏輯與)||(邏輯或)運(yùn)算規(guī)則優(yōu)先次序賦值<||<&&<關(guān)系<算術(shù)<!(1)!:取邏輯值的相反值。(2)&&:參加運(yùn)算的兩個(gè)邏輯值都為真時(shí),結(jié)果為真(1)。(3)||:參加運(yùn)算的兩個(gè)邏輯值都為假時(shí),結(jié)果為假(0)。邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式和邏輯量連接起來(lái)的式子。舉例已知:(a=1b=0)1a||b&&0!a&&(5>3)||b0雙目單目二、邏輯運(yùn)算符和邏輯表達(dá)式值邏輯量“真”、“假”。C語(yǔ)言編譯系統(tǒng)中以數(shù)值1表示“真”,數(shù)值0表示“假”舉例5>3&&8<4-!00(5>3)&&(8<(4-!0))4&&5>3||21邏輯運(yùn)算符兩側(cè)的運(yùn)算對(duì)象不但可以是0和1,也可以是0或非0的整數(shù),也可是任何類型的數(shù)據(jù)。系統(tǒng)判定標(biāo)準(zhǔn):0為假;非0為真。二、邏輯運(yùn)算符和邏輯表達(dá)式‘c’&&‘d’1三、實(shí)現(xiàn)選擇結(jié)構(gòu)的控制語(yǔ)句選擇結(jié)構(gòu)單分支雙分支if(表達(dá)式)語(yǔ)句多分支if(表達(dá)式)語(yǔ)句1else語(yǔ)句2if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2……else語(yǔ)句nif語(yǔ)句的嵌套switch語(yǔ)句條件表達(dá)式語(yǔ)句格式舉例if(x>y)printf(“%d”,x);if(表達(dá)式)語(yǔ)句#include<stdio.h>voidmain(){floata,b,t=0;scanf(“%f,%f”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%5.2f,%5.2f\n”,a,b);}3,43.00,4.00……if(a>b)t=a;a=b;b=t;…………if(a>b)t=a;a=b;b=t;……3,44.00,0.00當(dāng)某些語(yǔ)句作為一個(gè)整體出現(xiàn)的時(shí)候,必須是復(fù)合語(yǔ)句的形式。(一)、單分支注意:表達(dá)式可以是邏輯表達(dá)式、關(guān)系表達(dá)式、任意數(shù)值類型練習(xí)P89

3格式if(x>y)printf(“%d”,x);elseprintf(“%d”,y);#include<stdio.h>#include<math.h>voidmain(){floata,b,c,p,s;scanf(“%f,%f,%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)

{

p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(“s=%7.2f\n”,s);

}elseprintf(“Notatriangle!\n”);}if(表達(dá)式)語(yǔ)句1else語(yǔ)句2例:輸入三角形的三邊,求三角形的面積。輸入a,b,c是三角形嗎?YNp(a+b+c)/2ssqrt(p*(p-a)*(p-b)*(p-c))輸出s輸出“非三角形!”3,4,5s=6.003,4,8Notatriangle!(二)、雙分支C語(yǔ)言程序設(shè)計(jì)(第3版)張磊編著清華大學(xué)出版社例3-20

設(shè)計(jì)求解一元二次方程(a≠0)的通用程序問(wèn)題分析與算法設(shè)計(jì)⑴若有實(shí)根,則計(jì)算并輸出實(shí)根⑵程序的輸入量為方程的系數(shù)a、b、c。。⑶程序中要使用數(shù)學(xué)函數(shù)sqrt(),要注意打開(kāi)math.h文件。#include<stdio.h>#include<math.h>voidmain(){floata,b,c;floatx1,x2,d;printf("Inputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);d=b*b-4*a*c;

if(d>=0){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf("x1=%f,x2=%f\n",x1,x2);}

elseprintf("norealroot.\n");}(二)、雙分支條件運(yùn)算符條件表達(dá)式舉例if(a>b)max=a;elsemax=b;表達(dá)式1?表達(dá)式2:表達(dá)式3max=(a>b)?a:b;注意使用條件若if語(yǔ)句中,在表達(dá)式為“真”和“假”時(shí),都只執(zhí)行一個(gè)賦值語(yǔ)句給同一個(gè)變量賦值,則可以用簡(jiǎn)單的條件運(yùn)算符來(lái)處理。取值表達(dá)式1為真,則取值為表達(dá)式2的值;表達(dá)式1為假,則取值為表達(dá)式3的值。(二)、雙分支條件運(yùn)算符?:結(jié)合性:自右向左表達(dá)式2和3可以是數(shù)值表達(dá)式、賦值表達(dá)式、函數(shù)表達(dá)式。舉例輸入一個(gè)字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。(二)、雙分支#include<stdio.h>voidmain(){charch;scanf(“%c”,&ch);ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch;printf(“%c\n”,ch);}格式舉例if(cost>3000)cash=500;elseif(cost>2000)cash=300;elseif(cost>1500)cash=200;elseif(cost>1000)cash=100;elsecash=0;if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2……else語(yǔ)句n語(yǔ)句本身含分號(hào)(三)、多分支(一)C語(yǔ)言程序設(shè)計(jì)(第3版)張磊編著清華大學(xué)出版社例3-7

計(jì)算分段函數(shù)值#include<stdio.h>voidmain(){floatx,y;printf("Input:");scanf("%f",&x);

if(x>0)y=5*x+8;

elseif(x==0)y=36;

elsey=1.5*x-26;printf("y=%f\n",y);}(三)、多分支(一)C語(yǔ)言程序設(shè)計(jì)(第3版)張磊編著清華大學(xué)出版社練習(xí):以下程序的輸出結(jié)果是()main(){inta=5,b=4,c=3,d=2;if(a>b>c)printf("%d\n",d);elseif((c-1>=d)==1)printf("%d\n",d+1);elseprintf("%d\n",d+2);}A.2B.3C.4D.編譯時(shí)有錯(cuò),無(wú)結(jié)果if語(yǔ)句的嵌套在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句。被嵌套的條件語(yǔ)句和嵌套進(jìn)去的條件語(yǔ)句既可是單分支,也可是雙分支。if(表達(dá)式1)

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

[else語(yǔ)句2][else

if(表達(dá)式3)語(yǔ)句3

[else語(yǔ)句4]]注意if與else的配對(duì)原則:else總是與它上面的最近的未配對(duì)的if配對(duì)。(三)、多分支(二)舉例已知a=3b=4c=5d=0,d=?if(a>b)

d=a;else

if(c>b)d=c;elsed=b;if(a>b)

if(c>b)d=c;elsed=b;if(a>b)

{if(c>b)d=c;}elsed=b;if(a>b)

if(c>b)d=c;elsed=b;elsed=a;d=5d=3d=0d=4(三)、多分支(二)練習(xí)P88

1、2開(kāi)關(guān)語(yǔ)句switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1case常量表達(dá)式2:語(yǔ)句2case常量表達(dá)式3:語(yǔ)句3……case常量表達(dá)式n:語(yǔ)句ndefault:語(yǔ)句n+1}當(dāng)分支較多時(shí),使用嵌套的if語(yǔ)句層數(shù)多,程序冗長(zhǎng)而且可讀性降低。此時(shí)可以考慮使用switch語(yǔ)句(開(kāi)關(guān)語(yǔ)句)來(lái)處理多分支。(三)、多分支(三)舉例#include<stdio.h>voidmain(){chargrade;printf(“請(qǐng)輸入考試等級(jí)A~D:”);scanf(“%c”,&grade);switch(grade){case‘A’:printf(“80~100\n”);case‘B’:printf(“70~79\n”);case‘C’:printf(“60~69\n”);case‘D’:printf(“<60\n”);default:printf(“error\n”);}}B70~7960~69<60Error根據(jù)輸入的考試成績(jī)等級(jí)打印出百分制分?jǐn)?shù)段。A:80~100B:70~79C:60~69D:<60說(shuō)明:應(yīng)在每一個(gè)printf后加break語(yǔ)句(三)、多分支(三)舉例#include<stdio.h>voidmain(){chargrade;printf(“請(qǐng)輸入考試等級(jí)A~D:”);scanf(“%c”,&grade)switch(grade){case‘A’:printf(“80~100\n”);break;case‘B’:printf(“70~79\n”);break;case‘C’:printf(“60~69\n”);break;case‘D’:printf(“<60\n”);break;default:printf(“error\n”);}}B70~79根據(jù)輸入的考試成績(jī)等級(jí)打印出百分制分?jǐn)?shù)段。A:80~100B:70~79C:60~69D:<60最后一行的break可以省略。(三)、多分支(三)思考#include<stdio.h>voidmain(){floatscore;printf(“請(qǐng)輸入考試成績(jī)0~100:”);scanf(“%f”,&score);if(score>100)printf(“請(qǐng)輸入0~100之間的數(shù)\n”);elseif(score>=80)printf(“A\n”);elseif(score>=70)printf(“B\n”);elseif(score>=60)printf(“C\n”);elseprintf(“D\n”);}根據(jù)輸入的考試成績(jī)(百分制整數(shù))打印出等級(jí)水平。(使用if~else語(yǔ)句實(shí)現(xiàn))A:80~100B:70~79C:60~69D:<60思考:使用switch語(yǔ)句如何實(shí)現(xiàn)?程序(三)、多分支(三)思考#include<stdio.h>voidmain(){floatscore;printf(“請(qǐng)輸入考試成績(jī)0~100:”);scanf(“%f”,&score);switch(score){case80~100:printf(“A\n”);break;case70~79:printf(“B\n”);break;case60~69:printf(“C\n”);break;case<60:printf(“D\n”);break;default:printf(“請(qǐng)輸入0~100之間的整數(shù)\n”);}}根據(jù)輸入的考試成績(jī)(百分制整數(shù))打印出等級(jí)水平。(使用switch語(yǔ)句實(shí)現(xiàn))A:80~100B:70~79C:60~69D:<60思考:本程序有問(wèn)題么?程序(三)、多分支(三)#include<stdio.h>voidmain(){floatscore;intp;printf(“請(qǐng)輸入考試成績(jī)0~100:”);scanf(“%f”,&score);p=(int)score/10;switch(p){case0:printf(“D\n”);break;case1:printf(“D\n”);break;case2:printf(“D\n”);break;case3:printf(“D\n”);break;case4:printf(“D\n”);break;case5:printf(“D\n”);break;case6:printf(“C\n”);break;case7:printf(“B\n”);break;case8:printf(“A\n”);break;case9:printf(“A\n”);break;case10:printf(“A\n”);break;default:printf(“請(qǐng)輸入0~100之間的整數(shù)\n”);}}改進(jìn)程序111種情況思考:不同case值時(shí)執(zhí)行相同的操作,是否可以合并?#include<stdio.h>voidmain(){intscore,p;printf(“請(qǐng)輸入考試成績(jī)0~100:”);scanf(“%c”,&score);p=score/10;switch(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論