版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章選擇結(jié)構(gòu)程序設(shè)計(jì)4.1選擇結(jié)構(gòu)和條件判斷4.2用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.4邏輯運(yùn)算符和邏輯表達(dá)式4.5條件運(yùn)算符和條件表達(dá)式4.6選擇結(jié)構(gòu)的嵌套4.7用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)4.8選擇結(jié)構(gòu)程序綜合舉例4.1選擇結(jié)構(gòu)和條件判斷在現(xiàn)實(shí)生活中,需要進(jìn)行判斷和選擇的情況是很多的如果你在家,我去拜訪你如果考試不及格,要補(bǔ)考如果遇到紅燈,要停車等待周末我們?nèi)ソ加?0歲以上的老年人,入公園免票4.1選擇結(jié)構(gòu)和條件判斷C語(yǔ)言有兩種選擇語(yǔ)句:(1)if語(yǔ)句,實(shí)現(xiàn)兩個(gè)分支的選擇結(jié)構(gòu)(2)switch語(yǔ)句,實(shí)現(xiàn)多分支的選擇結(jié)構(gòu)4.1選擇結(jié)構(gòu)和條件判斷
例4.1在例3.5的基礎(chǔ)上對(duì)程序進(jìn)行改進(jìn)。題目要求是求
方程的根。
由鍵盤輸入a,b,c。假設(shè)a,b,c的值任意,并不保證disc=。需要在程序中進(jìn)行判別,如果
,就計(jì)算并輸出方程的兩個(gè)實(shí)根,否則就輸出“方程無(wú)實(shí)根”的信息。
解題思路:輸入a,b,c計(jì)算discdisc<0計(jì)算x1,x2輸出無(wú)實(shí)根輸出x1,x2真假4.2用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)4.2.1用if語(yǔ)句處理選擇結(jié)構(gòu)舉例4.2.2if語(yǔ)句的一般形式4.2.1用if語(yǔ)句處理選擇結(jié)構(gòu)舉例
例4.2輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大的順序輸出這兩個(gè)數(shù)。解題思路:只需要做一次比較,然后進(jìn)行一次交換即可用if語(yǔ)句實(shí)現(xiàn)條件判斷關(guān)鍵是怎樣實(shí)現(xiàn)兩個(gè)變量值的互換★●AB互換前●★AB互換后4.2.1用if語(yǔ)句處理選擇結(jié)構(gòu)舉例★●ABC★4.2.1用if語(yǔ)句處理選擇結(jié)構(gòu)舉例★●ABC★●4.2.1用if語(yǔ)句處理選擇結(jié)構(gòu)舉例ABC★●★4.2.1用if語(yǔ)句處理選擇結(jié)構(gòu)舉例●#include<stdio.h>intmain(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f\n",a,b);return0;}將a和b的值互換如果a>b#include<stdio.h>intmain(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f\n",a,b);return0;}選擇結(jié)構(gòu),用if語(yǔ)句實(shí)現(xiàn)的
例4.3輸入3個(gè)數(shù)a,b,c,要求按由小到大的順序輸出。解題思路:可以先用偽代碼寫出算法:ifa>b,a和b對(duì)換
(a是a、b中的小者)ifa>c,a和c對(duì)換
(a是三者中最小者)ifb>c,b和c對(duì)換
(b是三者中次小者)順序輸出a,b,c#include<stdio.h>intmain(){floata,b,c,t;scanf("%f,%f,%f",&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("%5.2f,%5.2f,%5.2f\n",a,b,c);return0;}如果a>b,將a和b對(duì)換a是a、b中的小者#include<stdio.h>intmain(){floata,b,c,t;scanf("%f,%f,%f",&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("%5.2f,%5.2f,%5.2f\n",a,b,c);return0;}如果a>c,將a和c對(duì)換a是三者中的小者#include<stdio.h>intmain(){floata,b,c,t;scanf("%f,%f,%f",&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("%5.2f,%5.2f,%5.2f\n",a,b,c);return0;}如果b>c,將b和c對(duì)換b是三者中的次小者4.2.2if語(yǔ)句的一般形式if(表達(dá)式)語(yǔ)句1[else語(yǔ)句2]關(guān)系表達(dá)式邏輯表達(dá)式數(shù)值表達(dá)式方括號(hào)內(nèi)的部分為可選的4.2.2if語(yǔ)句的一般形式if(表達(dá)式)語(yǔ)句1[else語(yǔ)句2]簡(jiǎn)單的語(yǔ)句復(fù)合語(yǔ)句另一個(gè)if語(yǔ)句等最常用的3種if語(yǔ)句形式:1.if(表達(dá)式)語(yǔ)句1(沒(méi)有else子句)2.if(表達(dá)式)語(yǔ)句1else語(yǔ)句2(有else子句)3.if(表達(dá)式1)
語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3
┆elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句m+1(在else部分又嵌套了多層的if語(yǔ)句)if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;等價(jià)于分號(hào)不能丟說(shuō)明:(1)整個(gè)if語(yǔ)句可寫在多行上,也可寫在一行上但都是一個(gè)整體,屬于同一個(gè)語(yǔ)句(2)“語(yǔ)句1”…“語(yǔ)句m”是if中的內(nèi)嵌語(yǔ)句
內(nèi)嵌語(yǔ)句也可以是一個(gè)if語(yǔ)句(3)“語(yǔ)句1”…“語(yǔ)句m”可以是簡(jiǎn)單的語(yǔ)句,也可以是復(fù)合語(yǔ)句4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序4.3.2關(guān)系表達(dá)式4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序關(guān)系運(yùn)算符:用來(lái)對(duì)兩個(gè)數(shù)值進(jìn)行比較的比較運(yùn)算符C語(yǔ)言提供6種關(guān)系運(yùn)算符:①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)
⑤==(等于)⑥!=(不等于)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序關(guān)系、算術(shù)、賦值運(yùn)算符的優(yōu)先級(jí)算術(shù)運(yùn)算符(高)賦值運(yùn)算符(低)關(guān)系運(yùn)算符4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序c>a+b等效于c>(a+b)a>b==c等效于(a>b)==ca==b<c等效于a==(b<c)a=b>c等效于a=(b>c)4.3.2關(guān)系表達(dá)式關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)數(shù)值或數(shù)值表達(dá)式連接起來(lái)的式子關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”在C的邏輯運(yùn)算中,以“1”代表“真”,以“0”代表“假”4.4邏輯運(yùn)算符和邏輯表達(dá)式4.4.1邏輯運(yùn)算符及其優(yōu)先次序4.4.2邏輯表達(dá)式4.4.3邏輯型變量4.4.1邏輯運(yùn)算符及其優(yōu)先次序3種邏輯運(yùn)算符:&&(邏輯與)||(邏輯或)!(邏輯非)&&和||是雙目(元)運(yùn)算符!是一目(元)運(yùn)算符邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或其他邏輯量連接起來(lái)的式子4.4.1邏輯運(yùn)算符及其優(yōu)先次序判斷年齡在13至17歲之內(nèi)?age>=13&&age<=17判斷年齡小于12或大于65?age<12||age>654.4.1邏輯運(yùn)算符及其優(yōu)先次序ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假邏輯運(yùn)算的真值表4.4.1邏輯運(yùn)算符及其優(yōu)先次序邏輯運(yùn)算符的優(yōu)先次序!→&&→||(!為三者中最高)與其他運(yùn)算符的優(yōu)先次序!(高)算術(shù)運(yùn)算符關(guān)系運(yùn)算符&&和||賦值運(yùn)算符(低)4.4.2邏輯表達(dá)式邏輯表達(dá)式的值應(yīng)該是邏輯量“真”或“假”編譯系統(tǒng)在表示邏輯運(yùn)算結(jié)果時(shí)以數(shù)值1代表“真”,以0代表“假”但在判斷一個(gè)量是否為“真”時(shí)以0代表“假”,以非0代表“真”注意:將一個(gè)非零的數(shù)值認(rèn)作為“真”4.4.2邏輯表達(dá)式(1)若a=4,則!a的值為0(2)若a=4,b=5,則a&&b的值為1(3)a和b值分別為4和5,則a||b的值為1(4)a和b值分別為4和5,則!a||b的值為1(5)4&&0||2的值為14.4.2邏輯表達(dá)式修改后的邏輯運(yùn)算真值表ab!a!ba&&ba||b非0非00011非0001010非010010011004.4.2邏輯表達(dá)式判別某一年是否閏年,用邏輯表達(dá)式表示閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除,如2008②能被400整除,如2000(year%4==0&&year100!=0)||year%400==0如果表達(dá)式值為1,則閏年;否則為非閏年4.5條件運(yùn)算符和條件表達(dá)式有一種if語(yǔ)句,當(dāng)被判別的表達(dá)式的值為“真”或“假”時(shí),都執(zhí)行一個(gè)賦值語(yǔ)句且向同一個(gè)變量賦值如:if(a>b)max=a;elsemax=b;max=(a>b)?a
:b;條件運(yùn)算符4.5條件運(yùn)算符和條件表達(dá)式有一種if語(yǔ)句,當(dāng)被判別的表達(dá)式的值為“真”或“假”時(shí),都執(zhí)行一個(gè)賦值語(yǔ)句且向同一個(gè)變量賦值如:if(a>b)max=a;elsemax=b;max=(a>b)?a
:b;條件表達(dá)式4.5條件運(yùn)算符和條件表達(dá)式條件表達(dá)式的一般形式為表達(dá)式1?表達(dá)式2:
表達(dá)式34.5條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符的執(zhí)行順序:求解表達(dá)式1若為非0(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值4.5條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符優(yōu)先于賦值運(yùn)算符條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆币韵聻楹戏ǖ氖褂梅椒ǎ篴>b?(max=a):(max=b);a>b?printf(“%d”,a):printf(“%d”,b);4.5條件運(yùn)算符和條件表達(dá)式
例4.4輸入一個(gè)字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。4.5條件運(yùn)算符和條件表達(dá)式解題思路:用條件表達(dá)式來(lái)處理,當(dāng)字母是大寫時(shí),轉(zhuǎn)換成小寫字母,否則不轉(zhuǎn)換4.5條件運(yùn)算符和條件表達(dá)式#include<stdio.h>intmain(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z‘)?(ch+32):ch;printf("%c\n",ch);return0;}4.6選擇結(jié)構(gòu)的嵌套在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套一般形式:if()if()語(yǔ)句1else語(yǔ)句2elseif()語(yǔ)句3else語(yǔ)句4內(nèi)嵌ifelse總是與它上面最近的未配對(duì)的if配對(duì)4.6選擇結(jié)構(gòu)的嵌套在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套if(){
if()語(yǔ)句1}
else語(yǔ)句2內(nèi)嵌if{}限定了內(nèi)嵌if范圍4.6選擇結(jié)構(gòu)的嵌套
例4.5有一函數(shù):
編一程序,輸入一個(gè)x值,要求輸出相應(yīng)的y值。4.6選擇結(jié)構(gòu)的嵌套解題思路:用if語(yǔ)句檢查x的值,根據(jù)x的值決定賦予y的值由于y的可能值不是兩個(gè)而是三個(gè),因此不可能只用一個(gè)簡(jiǎn)單的(無(wú)內(nèi)嵌if)的if語(yǔ)句來(lái)實(shí)現(xiàn)4.6選擇結(jié)構(gòu)的嵌套解題思路:方法1(1)先后用3個(gè)獨(dú)立的if語(yǔ)句處理:輸入x若x<0,則y=-1若x=0,則y=0若x>0,則y=1輸出x和yscanf("%d",&x);if(x<0)y=-1;if(x==0)y=0;if(x>0)y=1;printf("x=%d,y=%d\n",x,y);4.6選擇結(jié)構(gòu)的嵌套解題思路:方法2(2)用一個(gè)嵌套的if語(yǔ)句處理:輸入x若x<0,則y=-1否則
若x=0,則y=0
否則y=1輸出x和yscanf("%d",&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf("x=%d,y=%d\n",x,y);4.6選擇結(jié)構(gòu)的嵌套解題思路:方法2(2)用一個(gè)嵌套的if語(yǔ)句處理:輸入x若x<0,則y=-1否則
若x=0,則y=0
否則y=1輸出x和yscanf("%d",&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf("x=%d,y=%d\n",x,y);scanf("%d",&x);if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;printf("x=%d,y=%d\n",x,y);提倡內(nèi)嵌if放在else中4.7用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)switch語(yǔ)句用來(lái)實(shí)現(xiàn)多分支選擇結(jié)構(gòu)學(xué)生成績(jī)分類85分以上為’A’等70~84分為’B’等60~69分為’C’等……人口統(tǒng)計(jì)分類
按年齡分為老、中、青、少、兒童4.7用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)
例4.6要求按照考試成績(jī)的等級(jí)輸出百分制分?jǐn)?shù)段,A等為85分以上,B等為70~84分,C等為60~69分,D等為60分以下。成績(jī)的等級(jí)由鍵盤輸入。4.7用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)解題思路:判斷出這是一個(gè)多分支選擇問(wèn)題根據(jù)百分制分?jǐn)?shù)將學(xué)生成績(jī)分為4個(gè)等級(jí)如果用if語(yǔ)句,至少要用3層嵌套的if,進(jìn)行3次檢查判斷用switch語(yǔ)句進(jìn)行一次檢查即可得到結(jié)果#include<stdio.h>intmain(){chargrade;scanf("%c",&grade);printf("Yourscore:");switch(grade){case'A':printf("85~100\n");break;case'B':printf("70~84\n");break;case'C':printf("60~69\n");break;case'D':printf("<60\n");break; default:printf("enterdataerror!\n");}return0;}值為Aswitch語(yǔ)句的作用是根據(jù)表達(dá)式的值,使流程跳轉(zhuǎn)到不同的語(yǔ)句switch語(yǔ)句的一般形式:switch(表達(dá)式){case常量1:語(yǔ)句1case常量2:語(yǔ)句2
┇
┇
┇case常量n:語(yǔ)句ndefault:語(yǔ)句n+1}整數(shù)類型(包括字符型)switch語(yǔ)句的作用是根據(jù)表達(dá)式的值,使流程跳轉(zhuǎn)到不同的語(yǔ)句switch語(yǔ)句的一般形式:switch(表達(dá)式){case常量1:語(yǔ)句1case常量2:語(yǔ)句2
┇
┇
┇case常量n:語(yǔ)句ndefault:語(yǔ)句n+1}不能相同scanf("%c",&grade);printf("Yourscore:");switch(grade){case'A':printf("85~100\n");break;case'B':printf("70~84\n");break;case'C':printf("60~69\n");break;case'D':printf("<60\n");break; default:printf("enterdataerror!\n");}scanf("%c",&grade);printf("Yourscore:");switch(grade){case'A':printf("85~100\n");break;case'B':printf("70~84\n");break;case'C':printf("60~69\n");break;case'D':printf("<60\n");break; default:printf("enterdataerror!\n");}scanf("%c",&grade);printf("Yourscore:");switch(grade){case'A‘:case'B‘:case'C':printf("60~69\n");break;case'D':printf("<60\n");break; default:printf("enterdataerror!\n");}
例4.7編寫程序,用switch語(yǔ)句處理菜單命令。解題思路:在許多應(yīng)用程序中,用菜單對(duì)流程進(jìn)行控制,例如從鍵盤輸入一個(gè)’A’或’a’字符,就會(huì)執(zhí)行A操作,輸入一個(gè)’B’或’b’字符,就會(huì)執(zhí)行B操作,等等。#include<stdio.h>intmain(){voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch){case'a':case‘A’:action1(a,b);break;
case'b':case‘B’:action2(a,b);break;
default:putchar(‘\a’);}return0;}輸入a或A調(diào)用action1函數(shù),執(zhí)行A操作voidaction1(intx,inty){printf("x+y=%d\n",x+y);}#include<stdio.h>intmain(){voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch){case'a':case‘A’:action1(a,b);break;
case'b':case‘B’:action2(a,b);break;
default:putchar(‘\a’);}return0;}輸入b或B調(diào)用action2函數(shù),執(zhí)行B操作voidaction2(intx,inty){printf("x*y=%d\n",x*y);}#include<stdio.h>intmain(){voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch){case'a':case‘A’:action1(a,b);break;
case'b':case‘B’:action2(a,b);break;
default:putchar(‘\a’);}return0;}輸入其他字符發(fā)出警告4.8選擇結(jié)構(gòu)程序綜合舉例例4.8,4.9(自學(xué))
例4.10運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)輸費(fèi)用。路程(skm)越遠(yuǎn),每噸·千米運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:s<250沒(méi)有折扣250≤s<5002%折扣500≤s
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐘點(diǎn)工保潔協(xié)議
- 預(yù)制構(gòu)件購(gòu)銷制造合同
- 農(nóng)業(yè)借款協(xié)議案例
- 工程勞務(wù)分包簡(jiǎn)易合同樣本
- 指定代理經(jīng)銷合同
- 個(gè)人提供音樂(lè)教練勞務(wù)合同
- 購(gòu)銷合同有效期內(nèi)的責(zé)任劃分
- 油漆采購(gòu)合同樣式
- 購(gòu)銷合同解除協(xié)議的簽訂
- 借款合同到期后續(xù)簽協(xié)議
- 美育-美即生活 美育期末試卷及答案
- 網(wǎng)站項(xiàng)目功能測(cè)試驗(yàn)收?qǐng)?bào)告
- 自考02313電力系統(tǒng)微型計(jì)算機(jī)繼電保護(hù)歷年(12-19)真題試卷
- 馬克思主義基本原理智慧樹(shù)知到答案章節(jié)測(cè)試2023年重慶工商大學(xué)
- 合理性、先進(jìn)性的證明
- 人教版數(shù)學(xué)三年級(jí)上冊(cè)分?jǐn)?shù)的初步認(rèn)識(shí)分?jǐn)?shù)的初步認(rèn)識(shí)-課件16
- 選必中第一單元大單元教學(xué)設(shè)計(jì)
- GB/T 34281-2017全民健身活動(dòng)中心分類配置要求
- GB/T 33322-2016橡膠增塑劑芳香基礦物油
- GB/T 23988-2009涂料耐磨性測(cè)定落砂法
- GB/T 1962.2-2001注射器、注射針及其他醫(yī)療器械6%(魯爾)圓錐接頭第2部分:鎖定接頭
評(píng)論
0/150
提交評(píng)論