物理C語言流程控制PPT課件_第1頁
物理C語言流程控制PPT課件_第2頁
物理C語言流程控制PPT課件_第3頁
物理C語言流程控制PPT課件_第4頁
物理C語言流程控制PPT課件_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、例3-1 輸入一個華氏溫度f, 將其轉(zhuǎn)換為攝氏溫度c并輸出。轉(zhuǎn)換公式為 c = 5/9 * (f-32)#include void main( )第1頁/共80頁例3-2 輸入一個三位數(shù), 將該數(shù)逆序輸出輸出。例如,輸入123, 則輸出321。#include void main( )第2頁/共80頁例2-23 輸入幾個小寫字母,輸出它們的ASCII碼和對應(yīng)的大寫字母。void main( ) char a, b, c; printf(input character a, b, cn); scanf(%c %c %c, &a, &b, &c); printf(“%d,

2、%d, %dn, a, b, c); printf(%c, %c, %cn, a-32, b-32, c-32);第3頁/共80頁 a b c例1-5 從鍵盤輸入兩個整數(shù) a 和 b ,輸出a、b的值以及他們交換后的值。main( ) int a, b, c; printf(“Input a and b:”); scanf(“%d%d”, &a, &b); printf(“old a=%d b=%dn”, a, b); c = a; a = b; b = c; printf(“new a=%d b=%dn”, a, b);運(yùn)行結(jié)果:Input a and b: 5 7 old

3、a = 5 b = 7new a = 7 b = 5第4頁/共80頁例 : 對于隨機(jī)輸入的半徑r ,計算圓的直徑D、圓周長L、圓面積S、圓球表面積M和球體積V。#define PI 3.14159main( ) float r, d, l, s; double m, v; printf(“Input r:”); scanf(“%f”, &r); d = 2*r;l = 2*PI*r;s = PI*r*r; m = 4*PI*r*r;v = m*r/3; printf(“D=%6.2f L=%6.2f S=%6.2fn”, d, l, s); printf(“M=%6.2f V=%6.2

4、fn”, m, v ); 運(yùn)行結(jié)果:Input r : 1.5D= 3.00 L= 9.42 S= 7.07M= 28.27 V= 14.14第5頁/共80頁c)b)(sa)(ss(sareac)b(a21s順序結(jié)構(gòu)程序設(shè)計舉例#include #include void main( ) float a, b, c, s, area; scanf(%f, %f, %f, &a, &b, &c); s = 1.0 / 2 * ( a + b + c ) ; area = sqrt (s*(s-a)*(s-b)*(s-c) ); printf(a=%7.2f, b=%7.2

5、f, c=%7.2f, s=%7.2fn, a, b, c, s); printf(area=%7.2fn, area);例: 輸入三角形邊長,求面積.文件包含預(yù)處理命令變量定義輸入數(shù)據(jù)輸出數(shù)據(jù)輸入:3, 4, 6 輸出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33第6頁/共80頁例 從鍵盤輸入一個大寫字母,用小寫字母輸出#include void main( ) char c1; c1 = getchar( ); c1 = c1+32; printf(%cn, c1);這個程序有什么問題嗎?第7頁/共80頁04012. 422acbcbxax方程的

6、根,設(shè)求例#include #include main( ) float a, b, c, x1, x2, delta, p, q; scanf(a=%f, b=%f, c=%f, &a, &b, &c); delta = b*b - 4*a*c; p = -b/(2*a); q = sqrt(delta)/(2*a); x1 = p+q; x2 = p-q; printf(nx1=%5.2fnx2=%5.2fn, x1, x2);aacbbx242輸入:a=1,b=3,c=2 輸出:x1=-1.00 x2=-2.00 分析:一元二次方程的根為: 令 delta = b

7、2 4ac , p = -b/(2*a) ; q = sqrt(delta)/(2*a); 則方程的兩個根為: x1 = p + q; x2 = p q 。 第8頁/共80頁條件語句A語句B真假PBA真假kA1A2AiAnk=k2k=k1k=knk=ki.l二分支選擇結(jié)構(gòu)l多分支選擇結(jié)構(gòu)3.2 選擇結(jié)構(gòu)程序設(shè)計第9頁/共80頁3.2 選擇結(jié)構(gòu)程序設(shè)計 if if 語句(條件選擇語句)if if語句的三種形式形式一: (單邊形式)格式:if (expression) statementexprstatement非0=0next statement例例:if ( x 0 ) printf(“%d”

8、, x); 下一條語句下一條語句第10頁/共80頁exprstatement1statement2非0=0形式二: (雙邊形式) if (expression) statement1 else statement2例:if (xy) max=x; else max=y;x ymax = xmax = y非0=0第11頁/共80頁形式三:多層嵌套if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statementn expr1statemnt1非0=0expr2expr3stat

9、emntnstatemnt3statemnt2非0非0=0=0例:if (salary10000) printf(“very rich”); else if (salary5000) printf(“rich”) ; else if (salary2000) printf(“medium”); else if (salary1000) printf(“good”); else if (salary700) printf(“ok”); else printf(“poor”); 第12頁/共80頁void main() int x, y, z,max;printf(“Input x, y, z:

10、”);scanf(“%d,%d,%d”, &x, &y, &z);max = x;if ( max y )max = y; if ( max z)max = z;printf(“max = %dn”, max); 例:輸入三個整數(shù),輸出其中的最大數(shù)。運(yùn)行:Input x, y, z : 5 ,8, 2 max = 8第13頁/共80頁 #include void main( ) int x, y; printf(Enter an integer:); scanf(%d, &x); printf(nx = %d |x| = %dn, x, y); 例:從鍵盤輸入一

11、個整數(shù),輸出它的絕對值。運(yùn)行:Enter an integer:-12 x= -12 |x| = 12第14頁/共80頁例: : 輸入3 3個數(shù)a a、b b、c, c, 要求按由小到大的順序輸出#include void main( ) float a, b, c, t ; scanf( “%f,%f,%f”, &a, &b, &c ); printf(“%5.2f, %5.2f, %5.2fn”, a, b, c );第15頁/共80頁 if 語句的嵌套 if ( 表達(dá)式 ) 語句1; else 語句2;if ( 表達(dá)式 ) if ( 表達(dá)式 ) else else

12、 語句2;第16頁/共80頁例: 輸入兩數(shù), 根據(jù)大小關(guān)系輸出 xy、x=y 或 xy。#include void main( ) int x, y; printf(Enter integer x, y:); scanf(%d,%d, &x, &y); if (x != y) if ( xy ) printf(XYn); else printf(X = 0 x = 0(2) x % 2 = = 0 x % 2 != 0(3) x = = y x != y(4) fabs(x-y) 1.0E-06 第20頁/共80頁關(guān)系表達(dá)式 一個表達(dá)式中可同時出現(xiàn)算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、賦值運(yùn)

13、算符。 (1) fabs(x-y) x+y(3) x != y = z-2(4) x = y = z-1 x = (y =( z-1)z (x+y)(x!=y) = (z-2)設(shè)設(shè) x = 1, y = 2, z = 3; 以下表達(dá)式的值以下表達(dá)式的值?第21頁/共80頁2.6.3 邏輯運(yùn)算符和邏輯表達(dá)式 邏輯運(yùn)算符: ! & |! & | 邏輯非 邏輯與 邏輯或 ! ! 單目單目運(yùn)算符運(yùn)算符 !a !a :表示對:表示對a a求反求反 & & 雙目雙目運(yùn)算符運(yùn)算符 a&b a&b : a a、b b都為非0 0時,結(jié)果為1 1 | | 雙目雙目

14、運(yùn)算符運(yùn)算符 a|b a|b : a a、b b都為0 0時,結(jié)果才為0 0 if ( ch = a & ch 1) | (b+14) (ab) & (c0) | a !a | (b=0) & (c=a) (!ab) & (b=c) & !a/ 0/ 1/ 0/ 0第23頁/共80頁如:if (a=b&x=y) printf(“a=b,x=y”); if (!3) printf(“OK”); if (a&5) printf(“%d”,a);l對 if 語句的說明:uif 后面的表達(dá)式類型任意u if (x) if (x!=0) if (!

15、x) if (x=0) u其中的語句可以是復(fù)合語句 u 0 x0) & (x5), 而不能寫成 0 x5 例 : #include void main( ) int x, y; scanf(“%d,%d”,&x,&y); if (xy) x- ; y- ; else x+; y+; printf(“%d,%dn”,x,y); 如果丟失大括號Compile Error!第24頁/共80頁例: 考慮下面程序的輸出結(jié)果: void main( ) int x=100, a=10, b=20; int v1=5, v2=0; if ( ab ) if ( b!=15 ) if

16、( !v1 ) x=1; else if ( v2 ) x=10; else x = -1; printf(“%d”, x); 結(jié)果:-1如果分支較多,嵌套 if 語句的層數(shù)較多,程序冗長且可讀性降低。第25頁/共80頁3.2.3 switch語句一般形式:switch( 表達(dá)式) case 常量表達(dá)式E1: 語句組 1; case 常量表達(dá)式E2: 語句組 2; . case 常量表達(dá)式En: 語句組 n; default: 語句組 ; switch表達(dá)式語句組1語句組2語句組n語句組.E 1E 2Endefaultcase 執(zhí)行過程: switch ( grade ) case A: pr

17、intf(“85100n”); case B: printf(“7084n”); case C: printf(“6069n”); case D: printf(“3059n”); case E: printf(“=90 ) grade = A; else if ( score = 80 ) grade = B; else if ( score = 70 ) grade = C; else if ( score = 60 ) grade = D; else grade = E; printf( “grade = %c n”, grade); 第30頁/共80頁 void main() int

18、score, s;char grade; scanf(“%d”, &score); s = score / 10 ; switch ( s ) case 10: case 9: grade = A; break; case 8:grade = B; break; case 7:grade = C; break; case 6:grade = D; break; case 5: case 4: case 3: case 2: case 1:case 0:grade = E; break; default: printf(“Errorn”); break; 第31頁/共80頁條件運(yùn)算 條件

19、運(yùn)算符: ? : 三目運(yùn)算符三目運(yùn)算符 條件表達(dá)式 表達(dá)式表達(dá)式1 1?表達(dá)式?表達(dá)式2 2:表達(dá)式:表達(dá)式3 3語義:先計算表達(dá)式語義:先計算表達(dá)式1 1的值,若結(jié)果為非的值,若結(jié)果為非0 0,則以表達(dá),則以表達(dá)式式2 2的值作為整個條件表達(dá)式的值;若為的值作為整個條件表達(dá)式的值;若為0 0,則以表達(dá),則以表達(dá)式式3 3的值作為整個條件表達(dá)式的值。的值作為整個條件表達(dá)式的值。例如:例如: (x0) ? 1 : -1第32頁/共80頁例:對鍵盤輸入的字符判斷其是否為大寫字母,若是,例:對鍵盤輸入的字符判斷其是否為大寫字母,若是,就轉(zhuǎn)換成小寫字母,其余字符不變。就轉(zhuǎn)換成小寫字母,其余字符不變。#

20、include void main( ) char ch; scanf( “%c”, &ch); ch = ( ch=A & ch 0, 有兩個不等實根。 (4) b2 4ac 0 ) else 第34頁/共80頁 例3-53-5輸入一個年份, ,判斷其是否為閏年。 void main( ) 閏年的條件是:(1)能被4整除,但不能被100整除的年份都是閏年。(2)能被100整除,又能被400整除的年份是閏年。不符合這兩個條件的年份不是閏年。第35頁/共80頁 例3-83-8某市電費(fèi)收費(fèi)標(biāo)準(zhǔn)如下: P56: P56 void main( )float s, f;scanf(“%f

21、”, &s);switch( (int)(s/30) ) case 0: f = 6; break; case 1: f = 6 + (s-30) * 1.8; break; case 2: csae 3: f = 6 + 30*1.8 + (s-60) * 1.6; brak; default: f = 6 + 30*1.8 + 60*1.6 + (s-120) * 1.4; brak; printf(“f= %.2fn”, f );第36頁/共80頁 順序結(jié)構(gòu) 順序結(jié)構(gòu)ABAB流程圖N-S圖CC第37頁/共80頁條件語句A語句B真假PBA真假kA1A2AiAnk=k2k=k1k=k

22、nk=ki.l二分支選擇結(jié)構(gòu)l多分支選擇結(jié)構(gòu)選擇結(jié)構(gòu)第38頁/共80頁 循環(huán)的含義是: 當(dāng)滿足某個特定的條件時,重復(fù) 執(zhí)行某段操作,直至條件不滿足 為止。 在許多問題中需要用到循環(huán)3.3 循環(huán)結(jié)構(gòu)程序設(shè)計第39頁/共80頁C語言可實現(xiàn)循環(huán)的語句有: while 語句 do while 語句 for 語句第40頁/共80頁3.3.1 用while 語句v一般形式:while (表達(dá)式) 循環(huán)體語句;v執(zhí)行流程:expr循環(huán)體假(0)真(非0)whilev特點:先判斷表達(dá)式,后執(zhí)行循環(huán)體v說明:l循環(huán)體有可能一次也不執(zhí)行l(wèi)循環(huán)體可為任意類型語句l下列情況,退出while循環(huán)u條件表達(dá)式不成立(為零

23、)u循環(huán)體內(nèi)遇 break, return, gotol無限循環(huán): while ( 1 ) 循環(huán)體;第41頁/共80頁例: 求5! #include void main( ) int i=1, p=1; printf(%d, p); p=1; i = 1;p = p*ii=i+1i=5結(jié)束Y開始N第42頁/共80頁例3-9 用while語句計算100!1001ii #include void main( ) int i = 1; double p = 1.0; while ( i=100 ) p = p * i; i+; printf(%lfn, p); 循環(huán)變量增值第43頁/共80頁例: 編

24、程序, 輸出100200之間能被3整除的數(shù). #include void main( ) int i = 100; while ( i=200 ) if ( i % 3 = 0 ) printf(%d , i ); i+; 第44頁/共80頁 #include void main( ) int i = 1; float sum = 0; while ( i100 ) p = p + 1.0 / i; i += 2; printf(%fn, sum); 例3-10 利用while語句計算1+1/3+1/5+1/99的值第45頁/共80頁3.3.2 dowhile語句v一般形式:do 循環(huán)體語句;

25、 while(表達(dá)式);v執(zhí)行流程:do循環(huán)體表達(dá)式假(0)真(非0)whilev特點:先執(zhí)行循環(huán)體,后判斷表達(dá)式v說明:l至少執(zhí)行一次循環(huán)體ldowhile可轉(zhuǎn)化成while結(jié)構(gòu)第46頁/共80頁 #include void main( ) int i=1; double p = 1.0; do p = p * i; i+; while ( i = 100); printf(%lfn, p); 例3-11 用dowhile循環(huán)計算100!第47頁/共80頁 void main( ) int n, digit; scanf(“%d”, &n); do digit = n % 10; p

26、rintf(“%d”, digit); n = n/10; while(n!=0); printf(n); 例3-12 輸入一個整數(shù),將各位數(shù)字逆序后輸出。例如,輸入123, 則輸出321。第48頁/共80頁while語句 與 dowhile 語句的區(qū)別do循環(huán)體表達(dá)式假(0)真(非0)while while語句: dowhile 語句:表達(dá)式循環(huán)體假(0)真(非0)while第49頁/共80頁 while 和 dowhile循環(huán)的比較void main( ) int sum=0, i; scanf(%d, &i); do sum = sum + i; i+; while ( i =

27、10); printf(%d, sum);void main( ) int sum=0, i; scanf(%d, &i); while ( i = 10 ) sum = sum + i;i+; printf(“%d,sum);輸入輸入1:輸出:輸出: 55 55 輸入輸入11:輸出:輸出: 0 11第50頁/共80頁for ( expr1 ; expr2; expr3 ) 循環(huán)體語句;v執(zhí)行流程:expr2循環(huán)體假(0)真(非0)forexpr1expr33.3.3 for 語句v一般形式:第51頁/共80頁例3-13 利用for語句計算100!1001ii void main( )

28、 int i ; double p=1.0 ; for (i=1; i=100; i+)p = p* i; printf(%lf, p); 第52頁/共80頁vfor語句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)循環(huán)體語句;v說明:lfor語句中expr1, expr2 ,expr3 類型任意,都可省略,但分號;不可省l無限循環(huán): for ( ; ; )lfor語句可以轉(zhuǎn)換成while結(jié)構(gòu) expr1; while( expr2 ) 循環(huán)體語句;循環(huán)體語句; expr3; 第53頁/共80頁例:#include void main( ) int i; for(i=0;i10

29、;i+) putchar(a+i); 運(yùn)行結(jié)果:abcdefghij例:#include void main( ) int i=0; for( ; i10; i+) putchar(a+i); 例:例:#include main( ) int i=0; for ( ; i10 ; ) putchar(a+(i+) ; 例:例:#include void main( ) int i=0; for( ; i10; putchar(a+i), i+ ) ; 第54頁/共80頁void main( ) int i, j, k; for( i=0, j=100; i=j; i+, j-) k = i+j

30、; printf(%d+%d=%dn“ , i, j, k); 第55頁/共80頁3.3.5 循環(huán)的嵌套 當(dāng)一個循環(huán)語句的循環(huán)體中又出現(xiàn)另一個循環(huán)語句時,就構(gòu)成了循環(huán)的嵌套。v三種循環(huán)可互相嵌套,層數(shù)不限v外層循環(huán)可包含兩個以上內(nèi)循環(huán),但不能相互交叉第56頁/共80頁v嵌套循環(huán)的執(zhí)行流程(1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); while() . 內(nèi)循環(huán)外循環(huán)內(nèi)循環(huán)v嵌套循環(huán)的跳轉(zhuǎn)l禁止從外層循環(huán)跳入內(nèi)層循環(huán)l禁止跳入同層的另

31、一循環(huán)第57頁/共80頁 void main( ) int line, n ; for ( line=1; line=9; line+ )n=1;while ( n = line ) printf(“%d*%d=%d ” , n, line, n*line); n+;printf(“n”); 例3-16 請輸出九九乘法口訣表。P67第58頁/共80頁 3.4 break語句和continue語句3.4.1 break語句 一般形式: break; 功能: 終止并跳出當(dāng)前循環(huán) 說明: break只能終止并跳出最近一層的結(jié)構(gòu) break不能用于循環(huán)語句和switch語句之外的任何其它語句之中第59

32、頁/共80頁exprbreak;假(0)真(非0)whiledobreak;.expr假(0)真(非0)whileexprbreak;假(0)真(非0)whileexprbreak;假(0)真(非0)while第60頁/共80頁expr2break;.假(0)真(非0)forexpr1expr3第61頁/共80頁 例3-19滿足條件提前終止循環(huán),分析下列程序的功能。 void main( ) int i, s = 0;int sum = 0;for ( i=1; i8 ) break; printf(%d, sum); 第62頁/共80頁 例3-18從鍵盤上連續(xù)輸入字符,并統(tǒng)計其中大寫字母的個

33、數(shù),直至輸入換行字符時結(jié)束。 void main( ) char ch; int sum = 0; while ( 1 ) ch = getchar( ); if ( ch = n ) break; if ( c=A & c=Z )sum+; printf(“%d”, sum); 第63頁/共80頁3.4.2 continue語句v一般形式: continue;v功能:結(jié)束本次循環(huán)。即跳過循環(huán)體中尚未執(zhí)行的語句,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷v僅用于循環(huán)語句中第64頁/共80頁expr2continue;.假(0)真(非0)forexpr1expr3第65頁/共80頁exprconti

34、nue;假(0)真(非0)while真(非0)docontinue;.expr假(0)whileexprcontinue;假(0)真(非0)while第66頁/共80頁例: 把100200 之間不能被3整除的數(shù)輸出。 #include void main( ) int i, count = 0; for ( i=100; i = 200; i+ )if ( i % 3 = 0 ) continue; printf(“%d ”, i );count+;printf(“ncount = %dn”, count );第67頁/共80頁例3-21 從鍵盤輸入不多于10個的實數(shù),以0作為結(jié)束標(biāo)記,求這些

35、數(shù)的和及其中正數(shù)的和。 void main( ) float sum1=0, sum2=0, num;int i;for ( i=0; i10; i+) scanf(“%f”, &num);if ( num = 0 )break;sum1+= num;if ( num = 1e-6) pi += item;i = i + 2;s = -s ;item = s / i ; printf(“pi = %f n”, pi*4 );第69頁/共80頁例3-26 求Fibonacci數(shù)列:1,1,2,3,5,8,的前40個數(shù)。15342331597109467502551422935245782

36、41578171855377258417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155 F1 = 1 ( n = 1 ) F2 = 1 ( n = 2 ) Fn = Fn-1 + Fn-2 (n =3 )第70頁/共80頁例3-26 求Fibonacci數(shù)列:1,1,2,3,5,8,的前40個數(shù)。題目分析:(1)該數(shù)列的特點是前兩項數(shù)為 1, 1, 從第三項開始,每一項都是前兩項之和。(2)假設(shè)前兩項為f1、f2, 則當(dāng)前項 f3 = f1 + f2。(3)求出 f3后, f1f2, f2f3, 重復(fù)操作即可。 void main

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論