![C語(yǔ)言-選擇分支結(jié)構(gòu)程序設(shè)計(jì)課件_第1頁(yè)](http://file4.renrendoc.com/view/8148279cec53c8b7538c0119e46ac2a5/8148279cec53c8b7538c0119e46ac2a51.gif)
![C語(yǔ)言-選擇分支結(jié)構(gòu)程序設(shè)計(jì)課件_第2頁(yè)](http://file4.renrendoc.com/view/8148279cec53c8b7538c0119e46ac2a5/8148279cec53c8b7538c0119e46ac2a52.gif)
![C語(yǔ)言-選擇分支結(jié)構(gòu)程序設(shè)計(jì)課件_第3頁(yè)](http://file4.renrendoc.com/view/8148279cec53c8b7538c0119e46ac2a5/8148279cec53c8b7538c0119e46ac2a53.gif)
![C語(yǔ)言-選擇分支結(jié)構(gòu)程序設(shè)計(jì)課件_第4頁(yè)](http://file4.renrendoc.com/view/8148279cec53c8b7538c0119e46ac2a5/8148279cec53c8b7538c0119e46ac2a54.gif)
![C語(yǔ)言-選擇分支結(jié)構(gòu)程序設(shè)計(jì)課件_第5頁(yè)](http://file4.renrendoc.com/view/8148279cec53c8b7538c0119e46ac2a5/8148279cec53c8b7538c0119e46ac2a55.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
選擇結(jié)構(gòu)根據(jù)給定的條件是否滿足,決定從給定的條件選擇其一。分為:二路分支多路分支if…else…語(yǔ)句switch語(yǔ)句關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符>大于
>=大于等于<小于
<=小于等于==等于
!=不等于說(shuō)明:(1)六個(gè)關(guān)系運(yùn)算符都是雙目運(yùn)算符;(2)由一個(gè)關(guān)系運(yùn)算符連接兩個(gè)對(duì)象形成的表達(dá)式稱為關(guān)系表達(dá)式,這兩個(gè)運(yùn)算對(duì)象可以是算術(shù)表達(dá)式、字符表達(dá)式等。運(yùn)算對(duì)象為字符數(shù)據(jù)時(shí),比較按其ASCII碼進(jìn)行。例:inti=3,j=5;i*i+j*j>100;例:‘a(chǎn)’>‘b’(3)關(guān)系表達(dá)式的值可以作為整數(shù)值參與運(yùn)算(4)與數(shù)學(xué)表達(dá)式的區(qū)別(5)注意區(qū)分“=”與“==”的差別例:inta=3,b=2,c=1,f;f=a>b>c;例:3<x<100邏輯運(yùn)算符與邏輯表達(dá)式在C語(yǔ)言中有三個(gè)邏輯運(yùn)算符&&邏輯與||邏輯或!邏輯非兩個(gè)操作對(duì)象同時(shí)為真時(shí),表達(dá)式的值為真。兩個(gè)操作對(duì)象之一為真時(shí),表達(dá)式的值為真。當(dāng)操作對(duì)象的值為真,則表達(dá)式的值為假。說(shuō)明:(1)&&和||是雙目運(yùn)算符,!是單目運(yùn)算符(2)&&和||的運(yùn)算級(jí)別低于關(guān)系運(yùn)算符,!的運(yùn)算級(jí)別高于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,
注意:
!的結(jié)合方向是從右向左。
&&和||的結(jié)合方向是從左向右,(3)不能確定的情況下,添加括號(hào)保證運(yùn)算次序。
盡量避免復(fù)雜煩瑣的邏輯表達(dá)式。例:a=10;b=20;c=30;a=(--b<=a)||(a+b!=c);a=?b=?a=1b=19(5)在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只有在必須執(zhí)行下一個(gè)邏輯運(yùn)
算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例:intx=-1;
執(zhí)行了++x||++x||++x后,x的值是?
x=1(4)參加邏輯運(yùn)算的運(yùn)算對(duì)象可以是0(“假”)或
任何非0的數(shù)值(“真”);但運(yùn)算后的結(jié)果和關(guān)系運(yùn)算的結(jié)果一樣,只能是邏輯值0和1。1.簡(jiǎn)單的if語(yǔ)句形式:if(表達(dá)式)語(yǔ)句執(zhí)行過(guò)程:如果表達(dá)式值非0,執(zhí)行該語(yǔ)句,然后執(zhí)行if的下一個(gè)語(yǔ)句;否則直接執(zhí)行if的下一個(gè)語(yǔ)句。例:
main(){inta,b,max;printf(”\n請(qǐng)輸入兩個(gè)數(shù):”);scanf(”%d%d”,&a,&b);
max=a;if(max<b)max=b;printf(”max=%d”,max);}if語(yǔ)句例:輸入三個(gè)整數(shù)x、y、z,把這三個(gè)數(shù)由小到大輸出。輸出x,y,x的值交換x,zx>z交換x,yx>y輸入x,y,zYNYN交換y,zy>zYN#include<stdio.h>main(){intx,y,z,t;printf(“Pleaseinputthex,y,z:”);scanf(“%d%d%d”,&x,&y,&z);
if(x>y){t=x;x=y;y=t;}if(x>z){t=x;x=z;z=t;}if(y>z){t=y;y=z;z=t;}printf(“Smalltobig:%d%d%d\n”,x,y,z);}if語(yǔ)句2.if/else語(yǔ)句形式:if(表達(dá)式)語(yǔ)句1else語(yǔ)句2執(zhí)行流程:
如果表達(dá)式值非0,執(zhí)行語(yǔ)句1;否則,執(zhí)行語(yǔ)句2;無(wú)論執(zhí)行了哪一路分支之后,都執(zhí)行if的下一條語(yǔ)句。例
if(x>y)max=x;elsemax=y;printf(”max=%d”,max);例.判斷給定的某一年是否是閏年。分析:如果某年能被4整除而不能被100整除,或者能被400整除,那么該年就是閏年,否則就是平年。
if(year%4==0&&year%100!=0||year%400==0)#include<stdio.h>main(){intyear,leap=0;printf("\n請(qǐng)輸入年份(yyyy):");scanf("%d",&year);
/*判斷該年是否是閏年*/
if(year%4==0&&year%100!=0||year%400==0)
leap=1;
if(leap)
/*leap=1,即該年是閏年*/printf("%d年是閏年.\n",year);
else
/*leap=0,即該年是平年*/printf("%d年是平年.\n",year);}例.制作簡(jiǎn)單的猜數(shù)字游戲。程序運(yùn)行時(shí)自動(dòng)產(chǎn)生1~5之間的隨機(jī)數(shù),接著等待鍵盤(pán)輸入猜的數(shù)字。如果猜對(duì)了,顯示“猜對(duì)了”相關(guān)信息;否則,如果猜錯(cuò)了,則顯示“猜錯(cuò)了”相關(guān)信息。分析:如何產(chǎn)生1~5之間的隨機(jī)數(shù)?1)隨機(jī)數(shù)產(chǎn)生:C語(yǔ)言提供srand()函數(shù),配合rand()函數(shù)可產(chǎn)生介于0~32767之間的隨機(jī)數(shù)(函數(shù)均包含在stdlib.h中)。srand((unsigned)time(NULL));
/*以做隨機(jī)數(shù)產(chǎn)生器的種子,time()函數(shù)包含在time.h中
*/guess=rand();
/*以上面得到的種子產(chǎn)生0~32767的整數(shù)*/2)1~5之間的隨機(jī)數(shù):首先用rand()函數(shù)產(chǎn)生的隨機(jī)數(shù),然后對(duì)5求余(rand()%5),產(chǎn)生0~4之間的整數(shù),然后再加1,即rand()%5+1就產(chǎn)生1~5之間的整數(shù)。#include<stdio.h>#include<stdlib.h>#include<time.h>main(){intdata,guess;
srand((unsigned)time(NULL));data=rand()%5+1;printf("請(qǐng)輸入要猜的數(shù)字(限1-5):");scanf("%d",&guess);
if(guess==data)printf("猜對(duì)了!~_~,正確數(shù)字為%d!\n",data);
elseprintf("猜錯(cuò)了!0_0,正確數(shù)字為%d!\n",data);}
例:一個(gè)5位數(shù),判斷它是不是回文數(shù),即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同。分析:分解出每一位數(shù)(萬(wàn)位、千位、十位和個(gè)位),然后判斷。輸出不是回文輸出是回文ge=x%10shi=x%100/10qian=x%10000/1000輸入的數(shù)字不是5位數(shù)wan=x/10000輸入長(zhǎng)整數(shù)wan>0&&wan<10wan==ge&&qian==shiYNYNmain(){longx;intge,shi,qian,wan;printf("pleaseinputthe5bitsnumber:\n");scanf("%ld",&x);wan=x/10000;
if(wan>0&&wan<10){qian=x%10000/1000;shi=x%100/10;ge=x%10;
if(ge==wan&&shi==qian)
printf("Itispalindromicnumber
!\n");
elseprintf("Itisnotpalindromicnumber
!\n");}
else printf(“Thenumberisnot5bits!\n");}3.if(表達(dá)式1)語(yǔ)句1
elseif(表達(dá)式2)語(yǔ)句2
elseif(表達(dá)式3)語(yǔ)句3
elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句n...例:有一個(gè)函數(shù)如下:x(x<1)y=2x+1(1≤x<10)5x-17(x≥10)編程序,輸入x值,輸出y值main(){floatx,y;printf("Inputx:");scanf("%f",&x);
if(x<1)y=x;
elseif(x<10)y=2*x+1;
elsey=5*x-17;printf("y=%f\n",y);}分析:根據(jù)輸入字符的ASCII碼來(lái)判別類(lèi)型。
例.編寫(xiě)程序,要求判別鍵盤(pán)輸入字符的類(lèi)別。#include"stdio.h"main(){charc;printf("\nPleaseinputacharacter
:\n");c=getchar();
if(c<32)
printf("Itisacontrolcharacter
!\n");
elseif(c>=’0’&&c<=’9’)
printf("Itisadigit!\n");
elseif(c>=’A’&&c<=’Z’)printf("Itisacapitalletter!\n");
elseif(c>=’a’&&c<=’z’)
printf("Itisalowerletter!\n");
elseprintf("Itisothercharacter!\n");}說(shuō)明:(1)三種形式的if語(yǔ)句中都出現(xiàn)的“表達(dá)式”,不僅只限于邏輯和關(guān)系表達(dá)式,還可以是任何類(lèi)型的;(2)if語(yǔ)句中,判斷條件表達(dá)式必須用()括起來(lái),
條件后面不加分號(hào),但語(yǔ)句之后有分號(hào);(4)if和else后的語(yǔ)句可以只有一條,也可以使用{}包括的幾條語(yǔ)句構(gòu)成的復(fù)合語(yǔ)句。(3)else不是語(yǔ)句,不能單獨(dú)使用,與if配對(duì)使用;(5)if(x)if(x!=0)(6)if(!x)if(x==0)例考慮下面程序的輸出結(jié)果#include<stdio.h>main(){intx,y,t;scanf(“%d%d”,&x,&y);if(x>y)t=y;y=x;x=t;elsex++;y++;printf(“%d,%d\n”,x,y);}Compile
Error!if語(yǔ)句的嵌套在if語(yǔ)句中:
if(表達(dá)式)語(yǔ)句1else語(yǔ)句2語(yǔ)句1和語(yǔ)句2都可以是另外一條if語(yǔ)句if(表達(dá)式1)
if(表達(dá)式2)語(yǔ)句1
else語(yǔ)句2else
if(表達(dá)式3)語(yǔ)句3
else語(yǔ)句4if(表達(dá)式1)語(yǔ)句1else
if(表達(dá)式2)語(yǔ)句2
else語(yǔ)句3if(表達(dá)式1)
if(表達(dá)式2)語(yǔ)句1
else語(yǔ)句2else語(yǔ)句3說(shuō)明:(1)else總是與最近的if匹配;(2)else不能單獨(dú)出現(xiàn),總是與if配對(duì)使用。例:main(){intx=2,y=-1,z=2;
if(x<y)if(y<0)z=0;elsez+=1;printf(“z=%d\n”,z);}
z=2編寫(xiě)原則:1、順序執(zhí)行的語(yǔ)句對(duì)齊;2、選擇體向內(nèi)縮進(jìn)3~4字符;3、若選擇體內(nèi)嵌套if語(yǔ)句,則該
if語(yǔ)句的選擇體亦繼續(xù)向內(nèi)縮進(jìn);4、若選擇體內(nèi)的語(yǔ)句多于1條,則必須使用{}括起來(lái);5、原則上,選擇體內(nèi)只有一條語(yǔ)句時(shí),可以不使用{}括起來(lái),但如果該語(yǔ)句分成多行編寫(xiě)時(shí),則使用{}具有更強(qiáng)的可讀性。main(){……;if(a<b){……;if(c<d){ ……;}}else{……;}}條件運(yùn)算符與條件表達(dá)式格式:表達(dá)式1?表達(dá)式2:表達(dá)式3意義:如果表達(dá)式1非0,此表達(dá)式取表達(dá)式2的值如果表達(dá)式1為0,此表達(dá)式取表達(dá)式3的值。例1:intm1=5,m2=3;m1>m2?(m1=1):(m2=-1)m1=?m2=?m1=1m2=3intx=1,y=2,z;z=x>y?++x:y++;x=?y=?z=?x=1y=3z=2例2:switch語(yǔ)句用來(lái)實(shí)現(xiàn)多路分支形式:switch(表達(dá)式){
case
常量1:語(yǔ)句序列1;
break;
case
常量2:語(yǔ)句序列2;
break;
┇
┇
case
常量n:語(yǔ)句序列n;
break;
default:
語(yǔ)句序列n+1;}執(zhí)行過(guò)程:首先計(jì)算表達(dá)式的值,若該值與某個(gè)case后面的常量相等,則執(zhí)行其后的語(yǔ)句序列,遇到break語(yǔ)句時(shí),跳出switch語(yǔ)句;如果表達(dá)式的值與所有常量都不相等,若存在default則執(zhí)行其后的語(yǔ)句序列,否則什么也不做。說(shuō)明:switch語(yǔ)句中的表達(dá)式可以為任何類(lèi)型,一般為整型或字符型,相應(yīng)地常量的類(lèi)型應(yīng)與其相同;2.同一switch語(yǔ)句的各case常量值,必須互不相同;3.case常量相當(dāng)于語(yǔ)句標(biāo)號(hào);執(zhí)行switch語(yǔ)句時(shí),找到與表達(dá)式值相等的某case常量,從此標(biāo)號(hào)開(kāi)始執(zhí)行下去,對(duì)以后的標(biāo)號(hào)不再比較,直到“}”為止;一般應(yīng)該在每個(gè)case后的語(yǔ)句序列跟一個(gè)break語(yǔ)句以便跳出switch正確實(shí)現(xiàn)多分支,可認(rèn)為break語(yǔ)句是case中的一部分。4.各個(gè)case后面的default語(yǔ)句出現(xiàn)的次序不影響結(jié)果;5.多個(gè)case可以共用一組執(zhí)行語(yǔ)句.例main(){inti=10;switch(i){case9:i+=1;case10:i+=1;case11:i+=1;default:i+=1;}printf(“i=%d”,i);}i=13例main(){inta=1,b=0;switch(a){case1:switch(b){case0:printf(“**0**”);break;case1:printf(“**1**”);break;}case2:printf(“**2**”);break;}}**0****2**分析:求解此方程的解,應(yīng)該考慮到各種可能的情況:當(dāng)a=0時(shí),不是二次方程。否則:1)當(dāng)b2-4ac=0時(shí),方程有兩個(gè)相等的實(shí)根。2)當(dāng)b2-4ac>0時(shí),方程有兩個(gè)不相等的實(shí)根。3)當(dāng)b2-4ac<0時(shí),方程有兩個(gè)共軛的復(fù)根。選擇分支結(jié)構(gòu)程序舉例例.求ax2+bx+c=0方程的解。#include<stdio.h>#include<math.h>main(){
floata,b,c,disc,x1,x2,realpart,imagpart;
printf("\n請(qǐng)輸入方程的三個(gè)系數(shù):(a=,b=,c=)\n");
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
if(fabs(a)<=1e-6)
printf("該方程沒(méi)有實(shí)根。\n");
elsedisc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("該方程有兩個(gè)相等的實(shí)根:x1=x2=%8.4f\n",-b/(2*a));
elseif(disc>1e-6)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("該方程有兩個(gè)不相等的實(shí)根:\nx1=%8.4f,x2=%8.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("該方程有兩個(gè)復(fù)根:\n");
printf("x1=%8.4f+%8.4fi\n",realpart,imagpart);
printf("x2=%8.4f-%8.4fi\n",realpart,imagpart);
}}例.一個(gè)超市商品信息管理系統(tǒng),試編寫(xiě)主程序部分實(shí)現(xiàn)簡(jiǎn)單的菜單選擇功能。#include”stdio.h”main(){intchoice;printf("\n\n\n********超市管理系統(tǒng)********\n\n");printf("1.錄入商品信息\n\n");printf("2.打印商品信息\n\n");printf("3.更新商品信息\n\n");printf("4.商品信息查詢\n\n");printf("5.商品信息統(tǒng)計(jì)\n\n");printf("6.商品銷(xiāo)售排行\(zhòng)n\n");printf("0.退出系統(tǒng)\n\n");printf("請(qǐng)選擇(0-6):");scanf("%d",&choice);
switch(choice){case1:
input_message();break;
/*錄入模塊*/
case2:
output_message();break;
/*輸出模塊*/
case3:
renew_message();break;
/*更新模塊*/
case4:
inquire_message();break;
/*查詢模塊*/
case5:
count_message();break;
/*統(tǒng)計(jì)模塊*/
case6:
sort_message();break;
/*排序模塊*/
case0:break;
/*退出系統(tǒng)*/}}
例.請(qǐng)輸入星期幾的第一個(gè)字母來(lái)判斷是星期幾,如果第一
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理 銷(xiāo)售合作合同范本
- 2025年度國(guó)際物流運(yùn)輸與海關(guān)電子申報(bào)服務(wù)合同
- 2025年度人力資源勞動(dòng)合同簽訂與員工休假制度協(xié)議
- 航空物流居間代理提成協(xié)議
- 2025年配電箱子項(xiàng)目投資可行性研究分析報(bào)告
- 現(xiàn)代商業(yè)綜合體綠建設(shè)計(jì)的創(chuàng)新實(shí)踐
- 公路混凝土澆筑合同范本
- 交易磋商合同范本
- 中國(guó)丙酸氯倍他索行業(yè)市場(chǎng)深度研究及投資戰(zhàn)略咨詢報(bào)告
- 中國(guó)合同范本網(wǎng)
- 2025年汽車(chē)零部件項(xiàng)目可行性研究報(bào)告
- (一診)畢節(jié)市2025屆高三第一次診斷性考試 英語(yǔ)試卷(含答案)
- 油氣長(zhǎng)輸管道檢查標(biāo)準(zhǔn)清單
- 《酸棗營(yíng)銷(xiāo)戰(zhàn)略》課件
- 小學(xué)二年級(jí)100以內(nèi)連加連減豎式計(jì)算練習(xí)題
- 圖像敘事的跨學(xué)科視野-洞察分析
- 2025年天津市政集團(tuán)公司招聘筆試參考題庫(kù)含答案解析
- 急性缺血性卒中再灌注治療指南2024解讀
- 醫(yī)院醫(yī)用織物洗滌(租賃)服務(wù)方案投標(biāo)文件
- 2022年濰坊工程職業(yè)學(xué)院?jiǎn)握杏⒄Z(yǔ)題庫(kù)及答案解析
- 中建醫(yī)院幕墻工程專(zhuān)項(xiàng)方案
評(píng)論
0/150
提交評(píng)論