C語言程序設計-選擇結構_第1頁
C語言程序設計-選擇結構_第2頁
C語言程序設計-選擇結構_第3頁
C語言程序設計-選擇結構_第4頁
C語言程序設計-選擇結構_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設計選擇結構什么是選擇結構?根據所指定的條件是否滿足,決定從給定的兩組操作中選擇其一。選擇結構是程序智能化的基礎。C語言的選擇結構語法:if ( 條件表達式 ) 語句1 else 語句2解釋:如果條件滿足則執(zhí)行“語句1”,否則執(zhí)行“語句2”。注意: 當條件滿足時,只執(zhí)行“語句1”,不執(zhí)行“語句2”;反之亦然; “語句1”和“語句2”都需要有分號作為結束標志; “語句2”后面的分號同時也是if 語句的結束標志。語句1語句2語句1語句2例:if (a3) b=0; else b=1;if (x0.0) negative=negative+1; else positive=positive

2、+1;#include #include main() float a,b,c,x1,x2,beta; scanf(a=%f,b=%f,c=%f,&a,&b,&c); beta=b*b-4.0*a*c; if (beta=0) x1=(-b+sqrt(flag*beta)/(2.0*a); else x1=-9999; if (beta=0) x2=(-b-sqrt(flag*beta)/(2.0*a); else x2=-9999; printf(x1=%8.3fn,x1); printf(x2=%8.3fn,x2);例:解一元二次方程如果判別式小于零,則無法進行開方運算,給出錯誤提示。開始

3、定義浮點型變量a,b,c定義浮點型變量x1,x2,beta用scanf讀入數(shù)據計算判別式,保存在beta中x1=-9999結束beta=0?YN計算x1beta=0?YN計算x2beta=0?NY輸出無解輸出計算結果 if (beta=0) printf(results=%8.3f,%8.3f,x1,x2); else printf(beta大于()高=大于等于()小于()0) p+; else m+;if (x=3.0) ok=1; else ok=0;if (x1!=x2) equal=1; else equal=0; if (-3x-3 & xb & xy) num=num+1; els

4、e num=num-1;if (f!=a | my) 推廣,C語言用非零代表真,用零代表假。if(b) if(b!=0)if(a=a+4) a=a+4;if(a!=0)if(3). 條件恒成立C語言可能不對整個表達式進行計算。if (4|a=b)if(0 & a=b)實型變量不能進行相等的比較。if(pi=3.14)if(pi-3.14-1.0e-005)100注意事項:優(yōu)先級a=bc a=(bc)ca+b c(a+b)ab=c (ab)=ca=bc a=(bb- 4 (!a)(b-4)a=!b5&!cd a=(!b5)&(!cd)技巧與建議:如果記不住優(yōu)先級,就用括號將表達式進行明顯的分隔。

5、實際編程序的時候也建議這樣做。(x-3)*(y-4)=0 & x!=0寫出: 的定義域if 語句的形式if (表達式) 語句1; else 語句2;if (表達式) 語句1;表達式語句1語句2真假if (beta=0) k=1; else k=0;表達式語句1假真flag=0;if (beta=0) flag=1;例:輸入一個整數(shù) a,判斷它是偶數(shù)還是奇數(shù)?#include void main( )int a;printf (input a number: );scanf (%d, &a);if ( a % 2 = 0 ) printf (%d is an evenn, a);else pri

6、ntf(%d is an oddn, a);分析:若 a 是偶數(shù), a % 2=0注意:該方法只適用于整數(shù)。if 語句的形式if (表達式1) 語句1; else if (表達式2) 語句2;else if (表達式3) 語句3;else 語句n;表達式1語句1假真表達式2表達式3假語句2真語句3真假語句n#include main() float income,rate,tax; scanf(%f , &income); if (income800.0) rate=0.05; else if (income1200.0) rate=0.10; else if (income2000.0) r

7、ate=0.15; else if (income5000.0) rate=0.20; else rate=0.25; tax=income*rate; printf(The tax of %.2f is %.2f,income, tax);例:根據收入的不同計算所得稅金額。復合語句將多條語句用 包含起來,可以出現(xiàn)在任何允許出現(xiàn)單個語句的地方。例:輸入3個數(shù),按由大到小排列。ab?交換a,b假真ac?假真bc?假真交換a,c交換b,ca b t85 8t = a 5a = b 8b = t兩個存儲單元進行交換一定要引入一個中間變量if (ab) t=a; a=b; b=t;if (ac) t=

8、a; a=c; c=t;if (bc) t=b; b=c; c=t; 復合語句將多條語句用 包含起來,可以出現(xiàn)在任何允許出現(xiàn)單個語句的地方。例:輸入3個數(shù),按由大到小排列。ab?交換a,b假真ac?假真bc?假真交換a,c交換b,c作業(yè):編寫完整的程序,由鍵盤輸入4個數(shù),按由大到小的順序排列并輸出結果。if ( 表達式1 ) if ( 表達式2 ) 語句1 else 語句2else if ( 表達式3 ) 語句3 else 語句4else 與最近的 if 匹配!if 語句的嵌套基本if語句:if (表達式) 語句1 else 語句2例:設平面上一點M,其坐標為(x, y),若M落在圓心在坐標原

9、點的半徑為r的圓上,則置 key = 1, 落在圓外置 key = 2,落在圓內置 key = 0。分析:1)求點 M 到原點的距離 d2)比較 d 和圓半徑 r 的大小yM(x,y)x0r從鍵盤輸入x,y計算ddr?開始結束key=0輸出結果key=1真假d=r?真key=2假#include #include void main()float x, y, d,r;int key;printf (input x, y,r: );scanf (%f,%f, &x, &y,&r);d = sqrt ( x * x + y * y );if ( d = r ) if (d=r) key=1; /

10、在圓上 else key=2; /*在圓外*/else key = 0; / 在圓內printf (%.1f, %.1f ) : %dn, x, y, key);注意:1. else 語句不能單獨出現(xiàn),必須與if 配對出現(xiàn),采用就近配對原則;2. 第二個if語句是第一個if 語句的語句1,為明顯區(qū)分,建議加括號。例:輸入年份,判斷是否是閏年閏年的條件:1. 年份能被400整除;2. 年份能被4整除但不能被100整除;條件一?從鍵盤輸入year開始結束flag=1輸出結果flag=1假真真flag=0假條件二?#include void main ( ) int year,flag; print

11、f ( Which year ? ); scanf (%d,&year); if ( year % 400 = 0 ) flag = 1; else if ( year % 4 = 0 & year % 100 != 0 ) flag = 1; else flag = 0; if ( flag = 1 ) printf (%d年是閏年n,year); else printf (%d年不是閏年n,year);例:給一個不多于5位的正整數(shù): 求出它是幾位數(shù); 分別輸出每一位數(shù)字; 按逆序輸出各位數(shù)字。真真真真真開始data99999并且data0從鍵盤輸入datalength-wan=0wan=d

12、ata/10000qian=data%10000/1000length=5length-qian=0且length=4bai=data%1000/100length-bai=0且length=3shi=data%100/10length-shi=0且length=2ge=data%10輸出lengthlength4輸出wanlength3輸出qianlength2輸出bailength1輸出shi輸出ge錯誤提示結束真假真真輸出ge真真真length1輸出shilength2輸出bailength3輸出qianlength4輸出wan真逆序輸出順序輸出假假假真假假假假假假假假#include

13、main()int data,length,wan,qian,bai,shi,ge;scanf(%d,&data);if(data99999) printf(錯誤!);elselength=5;wan=data/10000;if (wan=0) length-;qian=data%10000/1000;if (qian=0 & length=4) length-;bai=(data%1000)/100;if (bai=0 & length=3) length-;shi=(data%100)/10;if (shi=0 & length=2) length-;ge=data%10;printf(數(shù)

14、字長度為:%d位n,length);printf(順序數(shù)字:);if (length4) printf(%1d,wan);if (length3) printf(%1d,qian);if (length2) printf(%1d,bai);if (length1) printf(%1d,shi);printf(%1dn,ge);printf(逆序數(shù)字:%1d,ge);if(length1) printf(%1d,shi);if(length2) printf(%1d,bai);if(length3) printf(%1d,qian);if(length4) printf(%1d,wan);pr

15、intf(n,ge);90243數(shù)字長度為:5位順序數(shù)字:90243逆序數(shù)字:34209運行結果:作業(yè):書后習題:5.55.65.95.10?條件運算符語法:條件 ? 表達式1 : 表達式2含義: 先計算條件; 若條件為真,計算并返回表達式1的值; 否則,計算并返回表達式2的值。max=(ab)?a:b;if (ab) max=a;else max=b;等價于ab?printf(%d,a):printf(%d,b);ab?a:cd?c:d結合方向為“自右向左”!(非)算數(shù)運算符關系運算符&、| |條件運算符= (賦值)高低max=ab?a:b+1;max=(ab?a:b)+1;max=ab?a

16、:(b+1);switch 語句switch (表達式)case 常量值1:語句1;break;case 常量值2:語句2;break;case 常量值n:語句n;break; default : 語句n+1;語法:計算表達式;若計算結果等于常量值1,則執(zhí)行語句1,然后跳出switch結構;若計算結果等于常量值2,則執(zhí)行語句2,然后跳出switch結構;若計算結果不等于任何常量值,則執(zhí)行語句n+1,結束switch結構。執(zhí)行過程:表達式語句2語句1語句n語句n+1常量值1常量值2常量值ndefault條件?語句1語句2兩分支多分支例:用switch語句評價學生成績60分以下為“E”;6170分

17、為“D”;7180分為“C”;8189分為“B”;90分以上為“A”。#include main ( )int score;printf ( input a score: );scanf ( %d, &score);switch ( score / 10 )case 10:printf(An); break; case 9: printf (An); break;case 8: printf (Bn); break;case 7: printf (Cn); break;case 6: printf (Dn); break;default: printf (En);關鍵:如何表示表達式和常量。

18、注意事項:case語句只起標號作用,程序根據表達式的值,轉向相應的case語句,順序向下執(zhí)行。語法上可以沒有break語句,但一般邏輯上要求存在。表達式的結果可以是任意類型,但一般為整型和字符型;常量表達式的值必須互不相同。#include main ( )char grade;printf ( input a grade: );scanf ( %c, &grade);switch ( grade )case A: printf(優(yōu)秀n); break; case B: printf(良好n); break;case C: printf(合格n); break;case D: printf(及格n); break;case E: printf(不及格n); break; default: print

溫馨提示

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

最新文檔

評論

0/150

提交評論