C語言之選擇結(jié)構(gòu)程序設(shè)計_第1頁
C語言之選擇結(jié)構(gòu)程序設(shè)計_第2頁
C語言之選擇結(jié)構(gòu)程序設(shè)計_第3頁
C語言之選擇結(jié)構(gòu)程序設(shè)計_第4頁
C語言之選擇結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學(xué)1C語言之選擇結(jié)構(gòu)程序設(shè)計第五章選擇結(jié)構(gòu)程序設(shè)計教學(xué)目標與要求:掌握關(guān)系運算符和關(guān)系表達式和邏輯運算符和邏輯表達式。能夠熟練掌握和運用if語句、switch語句,能設(shè)計出具有判斷能力的程序,重點學(xué)會設(shè)計程序的算法。

第1頁/共45頁

單分支、雙分支、多分支選擇其一

例:if(x>y)z=x;elsez=y;

例:if(x>y&&x>z)max=x;第2頁/共45頁

5.1關(guān)系運算符與關(guān)系表達式

1、關(guān)系運算符

假值用0表示,非0都為真;關(guān)系運算符與優(yōu)先級:

<<=>>=(高)==!=(低)

結(jié)合性:左到右第3頁/共45頁2、關(guān)系表達式

賦值運算關(guān)系運算算術(shù)運算(高)

例:c>a+b等價于c>(a+b)a=b>c等價于a=(b>c)第4頁/共45頁

5.2邏輯運算符與邏輯表達式

1、邏輯運算符:

&&邏輯與

||邏輯或

!邏輯非(單目運算)2、優(yōu)先級

邏輯非高算術(shù)運算關(guān)系運算

&&和||

賦值運算低例:(a>b)&&(x>y)等效a>b&&x>y第5頁/共45頁

3、邏輯運算符的運算規(guī)律ab!aa&&ba||b真真假真真真假假假真假真真假真假假真假假第6頁/共45頁

例:條件:30<x<=50

表達為:x<=50&&x>30例:條件:字符c是小寫字母

表達為:c<=‘z’&&c>=‘a(chǎn)’第7頁/共45頁

5.3if語句1、格式(1)格式一:

if(表達式)語句1[else語句2]

說明:if、else語句后語句可是復(fù)合語句,要用用{}。第8頁/共45頁例1:a、b兩個數(shù),輸出較大數(shù)。例2:a、b兩個數(shù),按由小到大次序輸出。練習(xí):編程求x絕對值

第9頁/共45頁源程序:voidmain(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){

}printf("a=%f,b=%f\n",a,b);}

t=a;a=b;b=t;第10頁/共45頁(2)格式二

if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3

…else語句n第11頁/共45頁#include<stdio.h>voidmain(){intscore;scanf("%d",&score);if(score>=90)printf("score=%dA等\n",score);elseif(score>=80)printf("

score=%dB等\n",score);elseif(score>=70)printf("score=%dC等\n",score);elseif(score>=60)printf("score=%dD等\n",score);elseprintf("score=%dE等\n",score);}例3:學(xué)生成績分等級。90-100“A”,80-89“B”,70-79“C”,60-69“D”,0-60“E”.

C5_cjfd.c第12頁/共45頁

2、if語句的嵌套

if()

if()語句1else語句2else

if()語句3else語句4

說明:

多個嵌套的結(jié)果,else存在匹配的問題:

else總是與最近的尚未匹配的if匹配。

如if和else數(shù)目不同,可用{}確定配對關(guān)系。第13頁/共45頁程序1:

voidmain(){floatx,y;scanf(“%f”,&x);

if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“x=%fy=%f\n”,x,y);}例4:有一函數(shù):

-1(x<0)y=0(x=0)1(x>0)

輸入任意x,求y.第14頁/共45頁

-1(x<0)y=0(x=0)1(x>0)程序2:voidmain(){floatx,y;scanf(“%f”,&x);

if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;printf(“x=%fy=%f\n”,x,y);}

第15頁/共45頁

-1(x<0)y=0(x=0)1(x>0)程序3:voidmain(){floatx,y;scanf(“%f”,&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;printf(“x=%fy=%f\n”,x,y);}第16頁/共45頁練習(xí):給一個不多于5位的正整數(shù),判斷是幾位數(shù)。

xt5_7.c第17頁/共45頁參考代碼:voidmain(){intnum,place;printf("請輸入一個整數(shù)(0-99999)");scanf("%d",&num);

第18頁/共45頁if(num>9999) place=5;elseif(num>999) place=4;elseif(num>99) place=3;elseif(num>9) place=2;elseplace=1;printf("place=%d\n",place);}第19頁/共45頁3、條件運算符

if語句中,表達式真假時,都給同一變量賦值,可用條件運算符。格式為:表達式1?表達式2:表達式3例:if(a>b)max=a;elsemax=b;

可改為:

max=(a>b)?a:b第20頁/共45頁說明:先求表達式1,如果滿足,則計算表達式2;否則,計算表達式3;條件運算優(yōu)于賦值運算第21頁/共45頁復(fù)習(xí):if語句格式:格式一:if(表達式)語句1[else語句2]格式二:if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3

…else語句n第22頁/共45頁#include<stdio.h>voidmain(){charc;c=getchar();練習(xí):判斷由鍵盤輸入的字符是數(shù)字、大寫字母、小寫字母、空格還是其他字符。第23頁/共45頁if(c<='9'&&c>='0')printf("%c是字符!\n",c);elseif(c<='z'&&c>'a')printf("%c是小寫字母!\n",c);elseif(c<='Z'&&c>'A')printf("%c是大寫字母!\n",c);elseif(c=='')printf("%c是空格!\n",c);elseprintf("%c是其他!\n",c);}第24頁/共45頁

5.4多分支語句switch格式:

switch(表達式){case常量表達式1:語句1;

case常量表達式2:語句2;

……case常量表達式n:語句n;

default:語句n+1;

}第25頁/共45頁

switch(表達式){case常量表達式1:語句1;

case常量表達式2:語句2;

……case常量表達式n:語句n;

default:語句n+1;

}說明:switch內(nèi)的表達式任意類型,與常量表達式類型一致。case語句后有break終止,否則將執(zhí)行下面case語句。switch與if不同,只能測試相等,不能像if作關(guān)系比較,如大于、小于之類;第26頁/共45頁例5

:輸入數(shù)字,輸出星期幾?輸入0,輸出”星期日“輸入1,輸出”星期一“

……

輸入6,輸出”星期六“

第27頁/共45頁參考代碼:

#include<stdio.h>voidmain(){intn;scanf("%d",&n);switch(n){}}case0:printf("星期日\n");break;case1:printf("星期一\n");break;case2:printf("星期二\n");break;…case6:printf(“星期六\n");break;default:printf("error!\n");第28頁/共45頁例6:學(xué)生成績分等級。90-100“A”,80-89“B”,70-79“C”,60-69“D”,0-60“E”.給出一個等級,輸出相應(yīng)分數(shù)段。

C5_djcj.c第29頁/共45頁參考代碼:

#include<stdio.h>voidmain(){chargrade;grade=getchar();switch(grade){}}

case'A':printf("90-100\n");break;case'B':printf("80-89\n");break;case'C':printf("70-79\n");break;case'D':printf("60-69\n");break;case'E':printf("50-59\n");break;default:printf("error!\n");第30頁/共45頁5.5例子選講例1:學(xué)生成績分等級。根據(jù)分數(shù)輸出相應(yīng)等級.90-100“A”,80-89“B”,70-79“C”,60-69“D”,0-60“E”

xt5_6.c分析:處理成績

temp=score/10;第31頁/共45頁#include<stdio.h>voidmain(){intscore,temp;chargrade;printf("請輸入學(xué)生成績:");scanf("%d",&score);temp=score/10;第32頁/共45頁switch(temp) {case10: case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break; case5: case4: case3: case2: case1: case0:grade='E'; }printf("成績:%d等級:%c",score,grade);}第33頁/共45頁例2:求ax2+bx+c=0的根.

C5_6.c分析:三種情況第34頁/共45頁參考代碼:#include<math.h>#include<stdio.h>voidmain(){floata,b,c,disc,x1,x2,p,q;scanf("%f,%f,%f",&a,&b,&c);disc=b*b-4*a*c;if(fabs(disc)<1e-6) printf("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("x1=%8.4fx2=%8.4f\n",x1,x2); }第35頁/共45頁else { p=; q=; printf("x1=%8.4f+%8.4fi\n",p,q); printf("x2=%8.4f-%8.4fi\n",p,q); }}

-b/(2*a);sqrt(-disc)/(2*a)第36頁/共45頁例3:給一個不多于5位的正整數(shù),判斷是幾位數(shù),并且按逆序輸出各位數(shù)字。Xt5_7.cIf語句求位數(shù).>9999,>999,>99>9,>=0求各位數(shù)字:如:wan=num/10000qian=(num-wan*10000)/1000…….定義變量:num,ge,shi,bai,qian,wan,place輸出結(jié)果第37頁/共45頁#include<strdio.h>voidmain(){intnum;intge,shi,bai,qian,wan,place;printf("請輸入一個整數(shù)(0-99999):");scanf("%d",&num);

if(num>9999) place=5;elseif(num>999) place=4;elseif(num>99) place=3;elseif(num>9) place=2;elseplace=1;printf("place=%d\n",place);第38頁/共45頁wan=num/10000;qian=(num-wan*10000)/1000;bai=(num-wan*10000-qian*1000)/100;shi=(num-wan*10000-qian*1000-bai*100)/10;ge=num-wan*10000-qian*1000-bai*100-shi*10;printf("每位數(shù)字為:");switch(place){case5:printf("%d,%d,%d,%d,%d\n",wan,qian,bai,shi,ge);printf("逆序數(shù)字為:");printf("%d,%d,%d,%d,%d\n",ge,shi,bai,qian,wan);break;第39頁/共45頁case4:printf("%d,%d,%d,%d\n",qian,bai,shi,ge);printf("逆序數(shù)字為:");printf("%d,%d,%d,%d\n",ge,shi,bai,qian);break;case3:printf("%d,%d,%d\n",bai,shi,ge);printf("逆序數(shù)字為:");printf("%d,%d,%d\n",ge,shi,bai);break;第40頁/共45頁case2:printf("%d,%d\n",shi,ge);printf("逆序數(shù)字為:"); printf("%d,%d\n",ge,shi);break;case1:printf("%d\n",ge);printf("逆序數(shù)字為:");printf("%d\n",ge);}}第41頁/共45頁例4:判斷某一年是否閏年.C5_5.c

閏年條件符合下

溫馨提示

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

評論

0/150

提交評論