c程序設計第4章 選擇結(jié)構的語句及流程_第1頁
c程序設計第4章 選擇結(jié)構的語句及流程_第2頁
c程序設計第4章 選擇結(jié)構的語句及流程_第3頁
c程序設計第4章 選擇結(jié)構的語句及流程_第4頁
c程序設計第4章 選擇結(jié)構的語句及流程_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第四章選擇結(jié)構的語句及流程控制關系運算符和關系表達式邏輯運算符和邏輯表達式條件運算符

if~else語句及三種形式

switch多分支語句

關系運算符主要用于兩個量大小的比較。關系運算符列表如下:

運算符名稱關系表達式例關系

>大于

a>b

a大于b

<小于q<j

q小于j==等于m1==m2

m1等于m2>=大于等于sum>=m1sum大于等于m1<=小于等于m1<=qm1小于等于q!=不等于c1!=c2

c1不等于c2在關系表達式中,若關系成立,則表達式的值為1,否則為0。(例子c501.c)

關系運算符及關系表達式邏輯運算符列表如下:

運算符名稱邏輯表達式例說明

!邏輯非

!a單目運算:非a

&&邏輯與a&&b

a與b||邏輯或a||b

a或b邏輯表達式的結(jié)果為真(1)或假(0)值。若:a=b=6;c=8;則:

(a>b)&&(c>a)其值為假(0)(a>b)||(c>a)其值為真(1)!(a==b)&&(c>a)其值為假(0)!4||9其值為真(1)邏輯運算符及邏輯表達式

ab!a!ba&&ba||b

11

0

0

1

1

10

0

1

0

1

01

1

0

0

1

00

1

1

0

0注意:

從上表可以看出對:

A&&b

的計值,若a的值為假則該式的值為假,因此不需要再計b值.

a||b

的計值,若a的值為真則該式的值為真,因此不需要再計b值.(例子c502.c)

也稱這樣的表達式為短路表達式。邏輯運算的真值表:選擇結(jié)構

if(條件分支)語句的三種格式:形式1:if(表達式)語句1else語句2

功能:根據(jù)表達式的計值,決定其后要執(zhí)行的操作。若表達式的值非0,則執(zhí)行語句1,否則執(zhí)行語句2。例:前邊計算三角形面積的程序,不是任意三條邊都可組成一個三角形。三角形邊的關系:兩邊之和大于第三邊;兩邊之差小于第三邊。完善程序

#include<math.h>main(){floata,b,c,s,area;

printf("inputa,b,c:");

scanf("%f,%f,%f",&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a&&fabs(a-b)<c&&fabs(a-c)<b){s=(a+b+c)/2.;area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("\narea=%-f",area);}

else

printf("dataerror!!!");}程序c503:表達式語句1語句2選擇結(jié)構形式2:if(表達式)語句功能:根據(jù)表達式的計值,決定其后要執(zhí)行的操作。若表達式的值非0,則執(zhí)行語句,否則執(zhí)行下一個語句。例:求三個數(shù)中最大者(c504,c505):main(){inta,b,c,max;

printf("inputa,b,c:");

scanf("%d,%d,%d",&a,&b,&c);

if(a<b)max=b;elsemax=a;if(c>max)max=c;

printf("\nmax=%-d",max);}main(){inta,b,c,max;

printf("inputa,b,c:");

scanf("%d,%d,%d",&a,&b,&c);max=a;if(a<b)max=b;

if(c>max)max=c;

printf("\nmax=%-d",max);}選擇結(jié)構if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3…。。。。

if(表達式n)語句nelse語句n+1形式3:這種格式也稱之為嵌套的if~else~語句,其執(zhí)行流程如下:完善一元二次方程的求根程序,考慮系數(shù)a=0;等根和復數(shù)根情況。先看一下流程圖:例:程序c506:#include<math.h>main(){floata,b,c,p,q,t,x1,x2;

printf("inputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);if(a==0.)printf("a==0!!!return.");else{p=-b/(2.*a);t=b*b-4*a*c;q=sqrt(fabs(t))/(2.*a);if(t==0.)printf("\nx1=x2=%-f",p);

elseif(t>0.)printf("\nx1=%-f,x2=%-f",p+q,p-q);elseprintf("\nx1=%-f+%fi,x2=%-f-%fi",p,q,p,q);}}例計算運費問題:

路程(s)越遠,運費越低,標準如下:路程s(km)折扣(%)s<2500250<=s<5002500<=s<100051000<=s<200082000<=s<300010s>=300015

計算運費公式:總運費(f)=基本費(p)*貨物重量(w)*路程(s)*(1-折扣(d))流程圖程序如下:

(c507)main(){floatf,p,w,s,d;

printf("inputp,w,s:");scanf("%f,%f,%f",&p,&w,&s);if(s<250.)d=0.;elseif(s<500.)d=.02;elseif(s<1000.)d=.05; elseif(s<2000)d=.08; elseif(s<3000)d=.1; elsed=.15;f=p*w*s*(1-d);printf("\nw=%-fs=%-ff=%-f",w,s,f);}條件運算符及條件表達式條件運算符要求有三個運算量,這是一個三目運算符,其表達式的一般格式:表達式1

?表達式2

:表達式3

若表達式1計值非0,則取表達式2的值,否則取表達式3的值。例:求三個數(shù)a,b,c中的大者。(例子c508)

main(){inta=-21,b=32,c=122,max;max=a>b?a:b;max=max>c?max:c;/*max=a>b?(a>c?a:c):(b>c?b:c);*/

printf(“max=%d”,max);}開關分支(switch)語句功能:根據(jù)switch表達式的值,找出與之匹配的case常量表達式i的值,然后執(zhí)行語句組i,若沒有與之匹配的值,則執(zhí)行語句組n+1。switch(表達式){case常量表達式1:語句組1case常量表達式2:語句組2……case常量表達式n:語句組ndefault:語句組n+1}格式:

例:將上例以Switch語句實現(xiàn)main(){floatf,p,w,s,d;

intk;

printf("inputp,w,s:");

scanf("%f,%f,%f",&p,&w,&s);

k=s/250;switch(k){case0:d=0.;break;case1:d=.02;break;case2:case3:d=.05;break;case4:

case5:case6:case7:d=.08;break;case8:case9:case10:case11:d=.1;break;default:d=.15;}f=p*w*s*(1-d);

printf("\nw=%-fs=%-ff=%-f",w,s,f);}程序如下(c509):程序續(xù)注意:1)常量表達式的值必須各不相同;2)case出現(xiàn)的次序無關;3)break語句的作用;4)多個case共用一組執(zhí)行語句;5)case語句的嵌套。

intx=1,y=0;switch(x){case1:switch(y){case0:printf(“**1**\n”);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論