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

下載本文檔

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

文檔簡介

第四章選擇結(jié)構(gòu)程序設(shè)計(jì)學(xué)習(xí)目的:掌握關(guān)系運(yùn)算符和邏輯運(yùn)算符的運(yùn)算規(guī)則及優(yōu)先級(jí)關(guān)系

掌握條件語句的語句格式和執(zhí)行順序?qū)W會(huì)進(jìn)行選擇結(jié)構(gòu)程序設(shè)計(jì)重點(diǎn)難點(diǎn):條件語句的嵌套選擇結(jié)構(gòu)程序的分析方法和設(shè)計(jì)方法

4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符

<<=>>=(優(yōu)先級(jí)相同)高

==!=(優(yōu)先級(jí)相同)低

算術(shù)運(yùn)算符(高)關(guān)系運(yùn)算符賦值運(yùn)算符(低)例:

c>a+bc>b==aa==b<ca=b>c關(guān)系表達(dá)式概念:由關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來的式子如:d+a>b+c(a>b)>(c>d)

關(guān)系表達(dá)式的值真以1代表

假以0代表例:當(dāng)a=3,b=2,c=1求f=a>b>c的值當(dāng)a=5,b=4,c=2求a>b!=c的值4.2邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符

&&(邏輯與)||(邏輯或)!(邏輯非)邏輯運(yùn)算符的運(yùn)算規(guī)則優(yōu)先級(jí):!&&||(高)

>(低)

!(高)算術(shù)運(yùn)算符關(guān)系運(yùn)算符

&&和||賦值運(yùn)算符(低)例(a>b)&&(x>y)(a==b)&&(x<y)!a||(a>b)邏輯表達(dá)式邏輯運(yùn)算結(jié)果邏輯值:真(1)假(0)運(yùn)算量的判斷:假(0)真(非0)例:a=6,b=4,c=2,

求表達(dá)式!(a-b)+c-1&&b+c/2的值

4.3if語句if語句的三種形式形式一格式:

if(expression)statement

執(zhí)行過程:exprstatement非0=0例:if(x>y)

printf(“%d”,x);形式二

格式:if(expression)statement1elsestatement2執(zhí)行過程::exprstatement1statement2非0=0例:if(x>y)max=x;elsemax=y;形式三:格式:執(zhí)行過程:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...elseif(exprm)statementm

elsestatementnexpr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;說明:if后面的表達(dá)式類型任意語句可以是復(fù)合語句

if(x)if(x!=0)if(!x)if(x==0)如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);例考慮下面程序的輸出結(jié)果:#include<stdio.h>main(){intx,y;

scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;

printf(“%d,%d\n”,x,y);}CompileError!例:求一個(gè)數(shù)的絕對值#include<stdio.h>main(){intx,y;

printf("Enteraninteger:");

scanf("%d",&x);y=x;

if(y<0)y=-y;

printf("\ninteger:%d--->absolutevalue:%d\n",x,y);}運(yùn)行:Enteraninteger:-12integer:-12--->absolutevalue:12

比較兩個(gè)數(shù),求其中的大者

main(){inta,b;

printf("Enterintegera:");

scanf("%d",&a);

printf("Enterintegerb:");

scanf("%d",&b);

if(a>b)

printf(“themaxnumberis:%d”,a);else

printf(“themaxnumberis:%d”,b);}求y=x(x+2)2<x<=102x-1<x<=2x-1x<=-1main(){intx,y;scanf(“%d”,&x);If(x>2&&x<=10)y=x*(x+2);elseif(x>-1&&x<=2)y=2*x;elseif(x<=-1)y=x-1;elsey=-1;If(y!=-1)printf(“%d”,y);elseprintf(“error”);}4.4If語句的嵌套if(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement3

內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4內(nèi)嵌if內(nèi)嵌if注:if~else配對原則:缺省{}時(shí),else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...結(jié)果:-1main(){inta=2,b=3,c;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;

printf(“%d”,c);}對函數(shù)y=-1(x<0)0(x=0)1(x>0)編程序,輸入x的值,輸出y的值程序1:程序2:main(){intx,y;

scanf(“%d”,&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“x=%d,y=%d\n”,x,y);}main(){intx,y;

scanf(“%d”,&x);if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;printf(“x=%d,y=%d\n”,x,y);}程序3:程序4:main(){intx,y;

scanf(“%d”,&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;

printf(“x=%d,y=%d\n”,x,y);}main(){intx,y;

scanf(“%d”,&x);y=0;if(x>=0)if(x>0)y=1;elsey=-1;

printf(“x=%d,y=%d\n”,x,y);}讀程序?qū)懡Y(jié)果main(){inta=1,b=3,c=5,d=4;if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;printf(“x=%d”,x);}結(jié)果:x=24.5switch語句(開關(guān)分支語句)一般形式:

switch(表達(dá)式){caseE1:語句組1;break;caseE2:語句組2;break;…….caseEn:語句組n;break;[default:語句組n+1;]}switch表達(dá)式語句組1語句組2語句組n語句組…...E1E2Endefaultcase說明:E1,E2,…En是常量表達(dá)式,且值必須互不相同語句標(biāo)號(hào)作用,必須用break跳出case后可包含多個(gè)可執(zhí)行語句,且不必加{}switch可嵌套多個(gè)case可共用一組執(zhí)行語句如:……case‘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!”);}運(yùn)行結(jié)果:score為5時(shí),輸出:

Verygood!Good!Pass!Fail!dataerror!例

main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}

printf(“\na=%d,b=%d”,a,b);}運(yùn)行結(jié)果:a=2,b=1例根據(jù)輸入字母輸出字符串#include<stdio.h>main(){intc;

printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}}4.6條件運(yùn)算符一般格式表達(dá)式1?表達(dá)式2:表達(dá)式3

說明:執(zhí)行順序優(yōu)先級(jí)結(jié)合方向表達(dá)式的類型例:設(shè)intx=1,y=0;x-->(y+x)?10:12.5>y++?‘A’:‘Z’例:intx=0,y=1;x++*x--!=‘y’?8-4:y

4.7程序舉例:例1寫一個(gè)程序,判斷某一年是否閏年Year被4整除Year被100整除Year被400整除YLeap=1NLeap=0YNLeap=1YNleap=0YN輸出閏年輸出非閏年leapmain(){intyear,leap;

scanf(“%d”,&year);if(year%4==0){if(year%100==0){if(year%400==0)leap=1;elseleap=0;}elseleap=1;}elseleap=0;if(leap)

printf(“%dis”,year);else

printf(“%disnot“,year);printf(“aleapyear.\n”);}程序:例2:求ax2+bx+c=0方程式的根main(){floata,b,c,disc,x1,x2,real,imag;else

scanf(“%f,%f,%f”,&a,&b,&c);{real=-b/(2*a);

printf(“theequation”);imag=sqrt(-disc)/(2*a);

if(fabs(a)<=1e-6)printf(“hascomplexroot:\n);

printf(“isnotaquadratic\n”);printf(%8.4f+%8.4fi\n,real,imag);

elseprintf(%8.4f-%8.4fi\n”,real,imag);disc=b*b-4*a*c;}}

if(fabs(disc)<=1e-6)

printf(“hastwoequalroots:%8.4f\n”,-b/(2*a));elseif(disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);

pr

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論