




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章分支結構程序設計
3.1關系運算符和關系表達式3.2邏輯運算符和邏輯表達式3.3if語句3.4switch語句例題鏈接第3章分支結構程序設計3.1關系運算符和關系表達式例題鏈接
例3.5例3.4例3.6例3.7例3.9例3.10例3.11例3.12例3.1例3.2例3.3例3.13例3.8例題鏈接例3.5例3.4例3.6例3.7例3.9例3.103.1關系運算符和關系表達式3.1.1關系運算符3.1.2關系表達式
P56返回所謂“關系運算”實際上是“比較運算”。將兩個值進行比較,判斷其比較的結果是否符合給定的條件。
3.1關系運算符和關系表達式3.1.1關系運算符P563.1.1關系運算符共6種:
>、>=、<、<=、==、!=(不等于)關系運算符結合方向:自左至右
>、>=、<、<=的優(yōu)先級高于==、!=關系運算符隱含“是否”的含義例如:“x>0”隱含x的值是否大于0P563.1.1關系運算符共6種:P563.1.2關系表達式用關系運算符將兩個表達式(可以是算術表達式或關系表達式、邏輯表達式、賦值表達式、字符表達式)連接起來的式子,稱關系表達式。例如,下面都是合法的關系表達式:
a>b,a+b>b+c,(a=3)>(b=5),'a'<'b',(a>b)>(b<c)P563.1.2關系表達式用關系運算符將兩個表達式(可以是算術3.1.2關系表達式判斷結果只有兩種可能:“真”或“假”關系成立為“真”,不成立為“假”只能是0或1表達式的值1結果為“真”時0結果為“假”時P563.1.2關系表達式判斷結果只有兩種可能:“真”或“假”x=1;printf(“%d”,x>0);真輸出1【例3.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。x=1;真輸出1【例3.1】假設a、b、x為整型變量,y為x=1;a=x==0;printf(“%d”,a);
假輸出0【例3.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。x=1;假輸出0【例3.1】假設a、b、x為整型變量,yx=3;a=x>0;b=x<5;printf(“%d”,a==b);真a的值1真b的值1真輸出1【例3.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。x=3;真a的值1真b的值1真輸出1【例3.1】假設x=-3;printf(“%d”,0<=x<=2);假0<=2輸出1注意:表達式0<=x<=2不能代表x的取值范圍0≤x≤2結合方向為自左至右【例3.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。真x=-3;假0<=2輸出1注意:表達式0<=x<=2不y=45.3219;printf(“%d”,y==45.3219);
假輸出0注意:存放在內存中的實型數總有誤差避免使用判斷“實型數”==“實型數”這樣的關系表達式?!纠?.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。y=45.3219;假輸出0注意:存放在內存中的實型數總3.2邏輯運算符和邏輯表達式3.2.1邏輯運算符3.2.2邏輯表達式P57返回3.2邏輯運算符和邏輯表達式3.2.1邏輯運算符P573.2.1邏輯運算符&&:邏輯與x>=0&&x<=2(雙目運算符,結合方向:自左至右)||:邏輯或x<-3||x>3(雙目運算符,結合方向:自左至右)!:邏輯非!(x>3)(一目運算符,結合方向:自右至左)優(yōu)先次序:?。?&--||P573.2.1邏輯運算符&&:邏輯與x>3.2.1邏輯運算符邏輯運算的真值表:P57a b!a !b a&&ba||b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假 3.2.1邏輯運算符邏輯運算的真值表:P57a3.2.2邏輯表達式用邏輯運算符將關系表達式或邏輯量連接起來的式子就是邏輯表達式。判斷結果只有兩種可能:“真”或“假”邏輯運算的結果為非零時:“真”邏輯運算的結果為零時:“假”表達式的值1結果為“真”時0結果為“假”時也只能是0或1P583.2.2邏輯表達式用邏輯運算符將關系表達式或邏輯量連接【例3.2】邏輯表達式的示例。x=1;printf("%d",x>=0&&x<=2);x=5;printf("%d",x>=0&&x<=2);printf("%d",x<-3||x>3);真真輸出1真假輸出0真輸出1假【例3.2】邏輯表達式的示例。x=1;x=5;真x=5;printf("%d",!x);printf("%d",3&&‘A’);printf("%d",(x=2)||0);printf("x=%d\n",x);x=0;printf("%d",x<-3||x>3);printf("%d",!x);輸出0輸出1輸出0輸出1輸出1輸出x=2x=5;x=0;輸出0輸出1輸出0輸出1邏輯運算的規(guī)則&&:兩個運算量都為非零,結果是真,值為1;否則,結果是假,值為0||:至少有一個運算量為非零,結果是真,值為1;否則,結果為假,值為0!:運算量為零,結果是真,值為1;否則,結果為假,值為0邏輯運算的規(guī)則&&:兩個運算量都為非零,結果是真,值為1;邏輯表達式的求解在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。a&&b&&c只有a為真(非0)時,才需要判別b的值,只有a和b都為真的情況下才需要判別c的值。只要a為假,就不必判別b和c(此時整個表達式已確定為假)。如果a為真,b為假,不判別c。a||b||c只要a為真(非0),就不必判斷b和c;只有a為假,才判別b;a和b都為假才判別c。邏輯表達式的求解在邏輯表達式的求解中,并不是所有的邏輯運算符也就是說,對&&運算符來說,只有a≠0,才繼續(xù)進行右面的運算。對運算符‖來說,只有a=0,才繼續(xù)進行其右面的運算。因此,如果有下面的邏輯表達式:
(m=a>b)
&&
(n=c>d)當a=1,b=2,c=3,d=4,m和n的原值為1時,由于“a>b”的值為0,因此m=0,而“n=c>d”不被執(zhí)行,因此n的值不是0而仍保持原值1。這點請大家注意。也就是說,對&&運算符來說,只有a≠0,才繼續(xù)進行右面的運算【例3.3】編寫一個含有特殊邏輯表達式的程序?!纠?.3】編寫一個含有特殊邏輯表達式的程序。#include<stdio.h>main(){ inta=1,b=0; printf("%d",0&&(a=2)); printf("a=%d",a); printf("%d",5&&(a=2)); printf("a=%d",a); b=1; printf("%d",5||(b=2)); printf("b=%d",b); printf("%d",0||(b=2)); printf("b=%d\n",b);}a的值仍為1a的值為2b的值仍為1
b的值為2#include<stdio.h>a的值仍為1a的值為2運算的先后順序:!算術運算符關系運算符&&||賦值運算符先后運算的先后順序:!先后3.3if語句3.3.1if語句的一般形式3.3.2if語句的嵌套P59返回if語句是用來判定所給定的條件是否滿足,根據判定的結果(真或假)決定執(zhí)行給出的兩種操作之一。3.3if語句3.3.1if語句的一般形式P59返回i3.3.1if語句的一般形式if語句有兩種形式
1.不帶else的if語句
2.帶else的if語句P603.3.1if語句的一般形式if語句有兩種形式P601.不帶else的if語句【例3.4】老大和老二各拿了一包糖,現要保證老大手中的糖比老二的少。編寫程序實現其功能。1.不帶else的if語句【例3.4】老大和老二各拿了一包#include<stdio.h>main(){ inta=0,b=0,t=0; printf("Inputa,b:");scanf("%d%d",&a,&b); if(a>b) { t=a; a=b; b=t;} printf("a=%d,b=%d\n",a,b);}25注意:縮進格式關鍵字ifa=2,b=552a=2,b=5#include<stdio.h>不帶else的if語句形式if(表達式)
if子句任意合法表達式
語法上要求一條語句不帶else的if語句形式if(表達式)任意合法語法上要表達式if子句0非0執(zhí)行過程表達式if子句0非0執(zhí)行過程【例3.5】編寫輸出如下分段函數值的程 序,要求x的值從鍵盤輸入。
1(0<x≤1)x+1(x≤0)x(x>1)y=【例3.5】編寫輸出如下分段函數值的程 序#include<stdio.h>main(){floatx=0,y=0;scanf("%f",&x);if(x<=0)y=x+1;if(x>0&&x<=1)y=1;if(x>1)y=x;printf("x=%f,y=%f\n",x,y);}第1次運行:3x=3.000000,y=3.000000
if(x>1)y=x;第2次運行:-1x=0.500000,y=1.000000if(x<=0)y=x+1;第3次運行:0.5if(x>0&&x<=1)y=1;x=-1.000000,y=0.000000必須調試所有可能情況#include<stdio.h>第1次運行:3x【例3.6】輸入3個整數,輸出其中最大數。輸入a、b、c的值max=amax=bmax<b?真假max<c?max=c真假輸出max的值【例3.6】輸入3個整數,輸出其中最大數。輸入a、b、c的#include<stdio.h>main(){inta=0,b=0,c=0,max=0;printf("Inputa,b,c:");scanf("%d%d%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("%d,%d,%d,max=%d\n",a,b,c,max);}輸入357
輸出3,5,7,max=7還要試最大值在最前、中間的情況#include<stdio.h>輸入357輸討論題3.1在4個數中找最大數如何解決?在100個或更多的數中用同樣的方法找最大數方便嗎?討論題3.1在4個數中找最大數如何解決?在100個或更多的【例3.7】輸入3個不同的整數存放在
a、b、c中。從小到大排序?!纠?.7】輸入3個不同的整數存放在
三個數排序過程7a6b5c675abc657abc{temp=a;a=b;b=temp;}
if(a>b){temp=b;b=c;c=temp;}
if(b>c)
冒泡{temp=a;a=b;b=temp;}if(a>b)
56冒泡冒泡法三個數排序過程7a6b5c675abc657abc{temp#include<stdio.h>main(){inta=0,b=0,c=0,temp=0;scanf("%d%d%d",&a,&b,&c);if(a>b){temp=a;a=b;b=temp;}if(b>c){temp=b;b=c;c=temp;}if(a>b){temp=a;a=b;b=temp;}printf("After:%d,%d,%d\n",a,b,c);}printf("Before:%d,%d,%d\n",a,b,c);建議加復合語句
{temp=a;a=b;b=temp;}#include<stdio.h>printf("Befo討論題3.2
在本題中將3個數改成4個數,程序應如何修改?若改成20(或更多)個數,此方法方便嗎嗎?討論題3.2 在本題中將3個數改成4個數,程序應如何修改?2.帶else的if語句【例3.8】輸入一個整數,如果是偶數,則輸出Evennumber,如果是奇數,則輸出Oddnumber。2.帶else的if語句【例3.8】輸入一個整數,如果是偶#include<stdio.h>main(){inta=0;printf("Inputa:\n");scanf("%d",&a);if(a%2==0)printf("Evennumber\n");
else
printf("Oddnumber\n");}第1次運行16輸出Evennumber
第2次運行5輸出Oddnumber關鍵字#include<stdio.h>第1次運行16輸出帶else的if語句形式if(表達式)if子句elseelse子句必須與if配對使用語法上都要求一條語句語法上都要求一條語句帶else的if語句形式if(表達式)if子句必須與if執(zhí)行過程非0表達式if子句0else子句執(zhí)行過程非0表達式if子句0else子句3.3.2if語句的嵌套【例3.9】嵌套if語句的示例。P67在if語句中又包含一個或多個if語句稱為if語句的嵌套。3.3.2if語句的嵌套【例3.9】嵌套if語句的示例。inta=0,b=0;
a=b=3;if(a>5)if(a<10)a++;elsea--;if(b>5){if(b<10)b++;}elseb--;printf("a=%d,b=%d\n",a,b);內嵌if語句構成if子句是if(a>5)if(a>5)if(a>5)if(a>5)if子句是復合語句運行結果
a=3,b=2inta=0,b=0;內嵌if語句構成if子句是【例3.10】編寫求下面分段函數值的程序,其中x的值從鍵盤輸入。x3+5(當0≤x<10時)x2+1(當20≤x<30時)y=0(當x<0時)2x2-x-6(當10≤x<20時)x+3(當x≥30時)【例3.10】編寫求下面分段函數值的程序,其中x的值從鍵盤輸scanf("%f",&x);
scanf("%f",&x);scanf("%f",&x);if(x<0)y=0;else
scanf("%f",&x);scanf("%f",&x);if(x<0)y=0;else if(x<10)y=x*x*x+5; else
scanf("%f",&x);scanf("%f",&x);if(x<0)y=0;else if(x<10)y=x*x*x+5; else if(x<20)y=2*x*x-x-6; else if(x<30)y=x*x+1; elsey=x+3;printf("x=%f,y=%f\n",x,y);被嵌套的if語句scanf("%f",&x);被嵌套的if語句簡化書寫格式(作用同上)if(x<0)y=0;elseif(x<10)y=x*x*x+5;elseif(x<20)y=2*x*x-x-6;elseif(x<30)y=x*x+1;elsey=x+3;只執(zhí)行其中一條測試時應至少運行5次簡化書寫格式(作用同上)if(x<0)y=0;只執(zhí)行其中3.4switch語句解決多分支問題P69返回3.4switch語句解決多分支問題P69返回【例3.11】從鍵盤輸入一個整數輸入1時顯示A輸入2時顯示B輸入3時顯示C輸入其他數時顯示D
【例3.11】從鍵盤輸入一個整數scanf("%d",&a);switch(a){case1:printf(”A”);break;
case2:printf(”B”);break;
case3:printf(”C”);break;
default:printf(”D”);break;}關鍵字第一次運行輸入11輸出A退出switch語句體第二次運行輸入22輸出B退出switch語句體入口入口第三次運行輸入33入口輸出C退出switch語句體第四次運行輸入55入口輸出D退出switch語句體scanf("%d",&a);關鍵字第一次運行輸入11switch語句的一般形式switch(表達式){case常量表達式1:語句組1break;case常量表達式2:語句組2break;……case常量表達式n:語句組nbreak;default:語句組n+1break;}整型或字符型值不能相等switch語句常用于處理鍵盤命令switch語句的一般形式switch(表達式)執(zhí)行過程(以例3.11為例)a=?輸入a的值輸出A輸出B輸出C輸出D=1=2=3=其他執(zhí)行過程(以例3.11為例)a=?輸入a的值輸出A輸出B輸【例3.12】寫出下面程序段的運行結果。scanf("%d",&a);switch(a){case1:printf(”A”);case2:printf(”B”);case3:printf(”C”);break;default:printf(”D”);}輸入1輸出ABC退出switch語句體輸入2輸出BC退出switch語句體break作用【例3.12】寫出下面程序段的運行結果。scanf("%d【例3.13】輸入一個百分制成績,輸出成績等級A、B、C、D、E。90~100A80~89B70~79C60~69D0~59E否則顯示出錯信息【例3.13】輸入一個百分制成績,輸出成績等級A、B、C、Dscanf("%d",&score);if(score<0||score>100)printf("Error!\n");else{temp=score/10; switch(temp) {case10: case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break; default:grade='E';break; } printf("%d,%c\n",score,grade);}89,B89
85,B85
100,A100
可以空分數段轉換成整數scanf("%d",&score);89,B8討論題3.3
如果將例3.13的功能改為:輸入的數據在85~100分為A,70~84分為B,55~69分為C,40~54分為D,0~39分為E,否則顯示出錯信息,那么應將程序怎樣改寫?討論題3.3如果將例3.13的功能改為:輸入的數據在85~第3章分支結構程序設計
3.1關系運算符和關系表達式3.2邏輯運算符和邏輯表達式3.3if語句3.4switch語句例題鏈接第3章分支結構程序設計3.1關系運算符和關系表達式例題鏈接
例3.5例3.4例3.6例3.7例3.9例3.10例3.11例3.12例3.1例3.2例3.3例3.13例3.8例題鏈接例3.5例3.4例3.6例3.7例3.9例3.103.1關系運算符和關系表達式3.1.1關系運算符3.1.2關系表達式
P56返回所謂“關系運算”實際上是“比較運算”。將兩個值進行比較,判斷其比較的結果是否符合給定的條件。
3.1關系運算符和關系表達式3.1.1關系運算符P563.1.1關系運算符共6種:
>、>=、<、<=、==、!=(不等于)關系運算符結合方向:自左至右
>、>=、<、<=的優(yōu)先級高于==、!=關系運算符隱含“是否”的含義例如:“x>0”隱含x的值是否大于0P563.1.1關系運算符共6種:P563.1.2關系表達式用關系運算符將兩個表達式(可以是算術表達式或關系表達式、邏輯表達式、賦值表達式、字符表達式)連接起來的式子,稱關系表達式。例如,下面都是合法的關系表達式:
a>b,a+b>b+c,(a=3)>(b=5),'a'<'b',(a>b)>(b<c)P563.1.2關系表達式用關系運算符將兩個表達式(可以是算術3.1.2關系表達式判斷結果只有兩種可能:“真”或“假”關系成立為“真”,不成立為“假”只能是0或1表達式的值1結果為“真”時0結果為“假”時P563.1.2關系表達式判斷結果只有兩種可能:“真”或“假”x=1;printf(“%d”,x>0);真輸出1【例3.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。x=1;真輸出1【例3.1】假設a、b、x為整型變量,y為x=1;a=x==0;printf(“%d”,a);
假輸出0【例3.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。x=1;假輸出0【例3.1】假設a、b、x為整型變量,yx=3;a=x>0;b=x<5;printf(“%d”,a==b);真a的值1真b的值1真輸出1【例3.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。x=3;真a的值1真b的值1真輸出1【例3.1】假設x=-3;printf(“%d”,0<=x<=2);假0<=2輸出1注意:表達式0<=x<=2不能代表x的取值范圍0≤x≤2結合方向為自左至右【例3.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。真x=-3;假0<=2輸出1注意:表達式0<=x<=2不y=45.3219;printf(“%d”,y==45.3219);
假輸出0注意:存放在內存中的實型數總有誤差避免使用判斷“實型數”==“實型數”這樣的關系表達式?!纠?.1】假設a、b、x為整型變量,y為單 精度型變量,請觀察輸出結果。y=45.3219;假輸出0注意:存放在內存中的實型數總3.2邏輯運算符和邏輯表達式3.2.1邏輯運算符3.2.2邏輯表達式P57返回3.2邏輯運算符和邏輯表達式3.2.1邏輯運算符P573.2.1邏輯運算符&&:邏輯與x>=0&&x<=2(雙目運算符,結合方向:自左至右)||:邏輯或x<-3||x>3(雙目運算符,結合方向:自左至右)!:邏輯非!(x>3)(一目運算符,結合方向:自右至左)優(yōu)先次序:?。?&--||P573.2.1邏輯運算符&&:邏輯與x>3.2.1邏輯運算符邏輯運算的真值表:P57a b!a !b a&&ba||b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假 3.2.1邏輯運算符邏輯運算的真值表:P57a3.2.2邏輯表達式用邏輯運算符將關系表達式或邏輯量連接起來的式子就是邏輯表達式。判斷結果只有兩種可能:“真”或“假”邏輯運算的結果為非零時:“真”邏輯運算的結果為零時:“假”表達式的值1結果為“真”時0結果為“假”時也只能是0或1P583.2.2邏輯表達式用邏輯運算符將關系表達式或邏輯量連接【例3.2】邏輯表達式的示例。x=1;printf("%d",x>=0&&x<=2);x=5;printf("%d",x>=0&&x<=2);printf("%d",x<-3||x>3);真真輸出1真假輸出0真輸出1假【例3.2】邏輯表達式的示例。x=1;x=5;真x=5;printf("%d",!x);printf("%d",3&&‘A’);printf("%d",(x=2)||0);printf("x=%d\n",x);x=0;printf("%d",x<-3||x>3);printf("%d",!x);輸出0輸出1輸出0輸出1輸出1輸出x=2x=5;x=0;輸出0輸出1輸出0輸出1邏輯運算的規(guī)則&&:兩個運算量都為非零,結果是真,值為1;否則,結果是假,值為0||:至少有一個運算量為非零,結果是真,值為1;否則,結果為假,值為0!:運算量為零,結果是真,值為1;否則,結果為假,值為0邏輯運算的規(guī)則&&:兩個運算量都為非零,結果是真,值為1;邏輯表達式的求解在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。a&&b&&c只有a為真(非0)時,才需要判別b的值,只有a和b都為真的情況下才需要判別c的值。只要a為假,就不必判別b和c(此時整個表達式已確定為假)。如果a為真,b為假,不判別c。a||b||c只要a為真(非0),就不必判斷b和c;只有a為假,才判別b;a和b都為假才判別c。邏輯表達式的求解在邏輯表達式的求解中,并不是所有的邏輯運算符也就是說,對&&運算符來說,只有a≠0,才繼續(xù)進行右面的運算。對運算符‖來說,只有a=0,才繼續(xù)進行其右面的運算。因此,如果有下面的邏輯表達式:
(m=a>b)
&&
(n=c>d)當a=1,b=2,c=3,d=4,m和n的原值為1時,由于“a>b”的值為0,因此m=0,而“n=c>d”不被執(zhí)行,因此n的值不是0而仍保持原值1。這點請大家注意。也就是說,對&&運算符來說,只有a≠0,才繼續(xù)進行右面的運算【例3.3】編寫一個含有特殊邏輯表達式的程序。【例3.3】編寫一個含有特殊邏輯表達式的程序。#include<stdio.h>main(){ inta=1,b=0; printf("%d",0&&(a=2)); printf("a=%d",a); printf("%d",5&&(a=2)); printf("a=%d",a); b=1; printf("%d",5||(b=2)); printf("b=%d",b); printf("%d",0||(b=2)); printf("b=%d\n",b);}a的值仍為1a的值為2b的值仍為1
b的值為2#include<stdio.h>a的值仍為1a的值為2運算的先后順序:!算術運算符關系運算符&&||賦值運算符先后運算的先后順序:!先后3.3if語句3.3.1if語句的一般形式3.3.2if語句的嵌套P59返回if語句是用來判定所給定的條件是否滿足,根據判定的結果(真或假)決定執(zhí)行給出的兩種操作之一。3.3if語句3.3.1if語句的一般形式P59返回i3.3.1if語句的一般形式if語句有兩種形式
1.不帶else的if語句
2.帶else的if語句P603.3.1if語句的一般形式if語句有兩種形式P601.不帶else的if語句【例3.4】老大和老二各拿了一包糖,現要保證老大手中的糖比老二的少。編寫程序實現其功能。1.不帶else的if語句【例3.4】老大和老二各拿了一包#include<stdio.h>main(){ inta=0,b=0,t=0; printf("Inputa,b:");scanf("%d%d",&a,&b); if(a>b) { t=a; a=b; b=t;} printf("a=%d,b=%d\n",a,b);}25注意:縮進格式關鍵字ifa=2,b=552a=2,b=5#include<stdio.h>不帶else的if語句形式if(表達式)
if子句任意合法表達式
語法上要求一條語句不帶else的if語句形式if(表達式)任意合法語法上要表達式if子句0非0執(zhí)行過程表達式if子句0非0執(zhí)行過程【例3.5】編寫輸出如下分段函數值的程 序,要求x的值從鍵盤輸入。
1(0<x≤1)x+1(x≤0)x(x>1)y=【例3.5】編寫輸出如下分段函數值的程 序#include<stdio.h>main(){floatx=0,y=0;scanf("%f",&x);if(x<=0)y=x+1;if(x>0&&x<=1)y=1;if(x>1)y=x;printf("x=%f,y=%f\n",x,y);}第1次運行:3x=3.000000,y=3.000000
if(x>1)y=x;第2次運行:-1x=0.500000,y=1.000000if(x<=0)y=x+1;第3次運行:0.5if(x>0&&x<=1)y=1;x=-1.000000,y=0.000000必須調試所有可能情況#include<stdio.h>第1次運行:3x【例3.6】輸入3個整數,輸出其中最大數。輸入a、b、c的值max=amax=bmax<b?真假max<c?max=c真假輸出max的值【例3.6】輸入3個整數,輸出其中最大數。輸入a、b、c的#include<stdio.h>main(){inta=0,b=0,c=0,max=0;printf("Inputa,b,c:");scanf("%d%d%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("%d,%d,%d,max=%d\n",a,b,c,max);}輸入357
輸出3,5,7,max=7還要試最大值在最前、中間的情況#include<stdio.h>輸入357輸討論題3.1在4個數中找最大數如何解決?在100個或更多的數中用同樣的方法找最大數方便嗎?討論題3.1在4個數中找最大數如何解決?在100個或更多的【例3.7】輸入3個不同的整數存放在
a、b、c中。從小到大排序?!纠?.7】輸入3個不同的整數存放在
三個數排序過程7a6b5c675abc657abc{temp=a;a=b;b=temp;}
if(a>b){temp=b;b=c;c=temp;}
if(b>c)
冒泡{temp=a;a=b;b=temp;}if(a>b)
56冒泡冒泡法三個數排序過程7a6b5c675abc657abc{temp#include<stdio.h>main(){inta=0,b=0,c=0,temp=0;scanf("%d%d%d",&a,&b,&c);if(a>b){temp=a;a=b;b=temp;}if(b>c){temp=b;b=c;c=temp;}if(a>b){temp=a;a=b;b=temp;}printf("After:%d,%d,%d\n",a,b,c);}printf("Before:%d,%d,%d\n",a,b,c);建議加復合語句
{temp=a;a=b;b=temp;}#include<stdio.h>printf("Befo討論題3.2
在本題中將3個數改成4個數,程序應如何修改?若改成20(或更多)個數,此方法方便嗎嗎?討論題3.2 在本題中將3個數改成4個數,程序應如何修改?2.帶else的if語句【例3.8】輸入一個整數,如果是偶數,則輸出Evennumber,如果是奇數,則輸出Oddnumber。2.帶else的if語句【例3.8】輸入一個整數,如果是偶#include<stdio.h>main(){inta=0;printf("Inputa:\n");scanf("%d",&a);if(a%2==0)printf("Evennumber\n");
else
printf("Oddnumber\n");}第1次運行16輸出Evennumber
第2次運行5輸出Oddnumber關鍵字#include<stdio.h>第1次運行16輸出帶else的if語句形式if(表達式)if子句elseelse子句必須與if配對使用語法上都要求一條語句語法上都要求一條語句帶else的if語句形式if(表達式)if子句必須與if執(zhí)行過程非0表達式if子句0else子句執(zhí)行過程非0表達式if子句0else子句3.3.2if語句的嵌套【例3.9】嵌套if語句的示例。P67在if語句中又包含一個或多個if語句稱為if語句的嵌套。3.3.2if語句的嵌套【例3.9】嵌套if語句的示例。inta=0,b=0;
a=b=3;if(a>5)if(a<10)a++;elsea--;if(b>5){if(b<10)b++;}elseb--;printf("a=%d,b=%d\n",a,b);內嵌if語句構成if子句是if(a>5)if(a>5)if(a>5)if(a>5)if子句是復合語句運行結果
a=3,b=2inta=0,b=0;內嵌if語句構成if子句是【例3.10】編寫求下面分段函數值的程序,其中x的值從鍵盤輸入。x3+5(當0≤x<10時)x2+1(當20≤x<30時)y=0(當x<0時)2x2-x-6(當10≤x<20時)x+3(當x≥30時)【例3.10】編寫求下面分段函數值的程序,其中x的值從鍵盤輸scanf("%f",&x);
scanf("%f",&x);scanf("%f",&x);if(x<0)y=0;else
scanf("%f",&x);scanf("%f",&x);if(x<0)y=0;else if(x<10)y=x*x*x+5; else
scanf("%f",&x);scanf("%f",&x);if(x<0)y=0;else if(x<10)y=x*x*x+5; else if(x<20)y=2*x*x-x-6; else if(x<30)y=x*x+1; elsey=x+3;printf("x=%f,y=%f\n",x,y);被嵌套的if語句scanf("%f",&x);被嵌套的if語句簡化書寫格式(作用同上)if(x<0)y=0;elseif(x<10)y=x*x*x+5;elseif(x<20)y=2*x*x-x-6;elseif(x<30)y=x*x+1;elsey=x+3;只執(zhí)行其中一條測試時應至少運行5次簡化書寫格式(作用同上)if(x<0)y=0;只執(zhí)行其中3.4switch語句解決多分支問題P69返回3.4switch語句解決多分支問題P69返回【例3.11】從鍵
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司股權授權合同范本
- 光纖面板采購合同范本
- 商場門店售賣合同范本
- 中華美德頌的演講稿
- 中專生學期個人總結
- 個人賣房委托書
- 分公司注銷合同范本
- 下半年會計工作總結
- 不起訴合同范本
- 代評職稱合同范本
- 深圳市一模+Z20名校聯(lián)盟+浙江名校協(xié)作體高三語文2月聯(lián)考作文題目解析及相關范文
- 油氣田開發(fā)專業(yè)危害因素辨識與風險防控
- DB37-T4824-2025 鄉(xiāng)鎮(zhèn)(街道)應急物資配備指南
- 教育部人文社科 申請書
- 無菌手術臺鋪置的細節(jié)管理
- 《重大基礎設施項目涉及風景名勝區(qū)選址論證報告編制技術規(guī)范》編制說明
- 議論文8(試題+審題+范文+點評+素材)-2025年高考語文寫作復習
- 2025-2030年(全新版)中國軟冰淇淋市場發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025新人教版英語七年級下單詞默寫表(小學部分)
- 2024年大慶醫(yī)學高等??茖W校高職單招語文歷年參考題庫含答案解析
- 2025江蘇蘇州高新區(qū)獅山商務創(chuàng)新區(qū)下屬國企業(yè)招聘9人高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論