《《選擇結(jié)構(gòu)》PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《選擇結(jié)構(gòu)》PPT課件(30頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、4.2 switch語句 4.1 if語句 1、 6種關(guān)系運(yùn)算符: = = != 2、 關(guān)系表達(dá)式: 用關(guān)系運(yùn)算符將表達(dá)式連接起來的式子 優(yōu)先級(jí): ( = )( = != ) 結(jié)合性:自左至右; 表達(dá)式的值: 若為真 , 則結(jié)果為 1; 若為假 , 則結(jié)果為 0。 35 的值為 0; 32 的值為 0; 3+(43)*4的值為 3; 3+4 float b=3.5; !a (0) !(a b) (1) a y=0 結(jié)果 :x為 3,y為 0。 (2)x=3; z=5|(x+); 結(jié)果: x為 3, z為 1。 (3)a = 0; b = 1; c = a+ 結(jié)果 : a為 1,b為 3,c為
2、0。 第 2 章 基 本 數(shù) 據(jù) 類 型 與 表 達(dá) 式 (1)n是小于 m的偶數(shù): n= 0 ) y =2 * x; printf(“y= %6.2f”, y ); 表達(dá)式 語句 真 假 單分支選擇 例: 例 2:輸入兩個(gè)數(shù) , 比較大小 ,將較大的數(shù)輸出。 單分支結(jié)構(gòu) #include main( ) float a, b,max; scanf(“%f, %f”, max=a; if (maxb) max=b; printf (“%f”, max); 第章 選擇程序設(shè)計(jì) 返回 4.1.2雙分支選擇語句 第 4章 選擇程序設(shè)計(jì) 形式: if(表達(dá)式 ) 語句 1 else 語句 2 表達(dá)式
3、語句 1 真 假 語句 2 雙分支選擇 main() float x , y; scanf(“%f ”, if ( x 0 ) y = 3 - x ; else y = 2 * x ; printf(“y= %6.2f”, y ); 例: 例 2:輸入兩個(gè)數(shù) , 比較大小 ,將較大的數(shù)輸出。 雙分支結(jié)構(gòu) #include main( ) float a, b; scanf(“%f, %f”, if (ab) printf (“%f”, a ); else printf (“%f”, b ); 第 4章 選擇程序設(shè)計(jì) 返回 4.1.3多分支選擇語句 第 4章 選擇程序設(shè)計(jì) 形式: if (表達(dá)式
4、 1) 語句 1 else if (表達(dá)式 2) 語句 2 else if (表達(dá)式 3) 語句 3 else if (表達(dá)式 m) 語句 m else 語句 m+1 表達(dá)式 1 真 語句 1 假 表達(dá)式 2 表達(dá)式 3 語句 4 語句 3 語句 2 真 真 假 假 多分支選擇 例 寫一個(gè)程序完成下列功能 : 輸入一個(gè)學(xué)生分?jǐn)?shù) score 如果 score=90 輸出 等級(jí) A 如果 80=score 90 輸出 等級(jí) B 如果 70=score 80 輸出 等級(jí) C 如果 60=score 70 輸出 等級(jí) D 如果 score=90) printf(“等級(jí) An”); else if (
5、score =80) printf(“等級(jí) Bn”); else if (score =70) printf(“等級(jí) Cn”); else if (score =60) printf(“等級(jí) Dn”); else printf(“等級(jí) En”); 程序如下: score90 score80 score70 score60 #include main( ) char c; printf(“input a character:n”); c=getchar( ); if(c=0 else if(c=) printf (“Dn”); else if(c=n) printf (“En”); else p
6、rintf(“Fn”); 例 2 判斷鍵盤輸入字符的類別 :如果是數(shù)字輸出 A,如果是大寫字母輸 出 B,如果是小寫字母輸出 C,如果是空格輸出 D,如果是回車換行格 輸出 E,如果是其它字符輸出 F 字符 ASCII 0 48 9 57 A 65 Z 90 a 97 z 122 1、 if語句判斷條件的 表達(dá)式 必須用 括號(hào) 括起來 ,括號(hào)后 不能用分號(hào)。 2、 if語句中的表達(dá)式 一般 為 關(guān)系或邏輯表達(dá)式 ,也可 以為 任何數(shù)值類型的表達(dá)式 或 賦值表達(dá)式 或 變量 。 3、 if語句中所有的語句應(yīng)為 單個(gè)語句 ,若想在滿足條 件時(shí)執(zhí)行一組語句,必須用 大括號(hào) 括起來。 第 4章 選擇程
7、序設(shè)計(jì) 注意 輸入兩個(gè)字符 ch1和 ch2, 如果 ch1=Z 且 ch2=B, 則輸出 You are right ! 思 考 程序如下: #include main( ) char ch1,ch2; ch1=getchar( ); ch2=getchar( ); if ( ch1 = Z 第 4章 選擇程序設(shè)計(jì) 程序如下: main() int year; printf(Please input the year:n); scanf(%d, if (year%4=0 else printf(%d is not a leap year.n,year); 從鍵盤上輸入年份,判斷其是否閏年。
8、閏年的條件是:能被 4整除、但不能被 100整除, 或者能被 400整除。 思 考 思 考 y= 3-x (x0) 程序如下: main( ) float x , y; scanf(“%f ”, if ( x 0 ) y =3- x; else if (x=0) y=2*x; else y=x; printf(“y= %6.2f”, y ); 例如: #include main( ) int x=100,a=30,b=20,ok1=10,ok2=6; printf(“%dn”,x); 第 4章 選擇程序設(shè)計(jì) if(ab) if(b!=10) if(!ok1) x=1; else if(ok2)
9、 x=10; else x=20; C語言規(guī)定, else總是與它前面最近的未配對的 if配對。 注意 4.1.4 if語句的嵌套 在 if語句中又包含了一個(gè)或多個(gè) if語句,就形成了 if語句的嵌套結(jié)構(gòu)。 4.2 Switch語句 switch(表達(dá)式 ) case 常量表達(dá)式 1: 語句 1; case 常量表達(dá)式 2: 語句 2; case 常量表達(dá)式 3: 語句 3; case 常量表達(dá)式 n: 語句 n; default: 語句 n+1; 多分支語句 ,根據(jù)表達(dá)式不同的值選擇不同的語句。 第 4章 選擇程序設(shè)計(jì) Switch語句的形式: 1、 switch后的表達(dá)式可以是 任何類型
10、; 2、語句結(jié)構(gòu)中各個(gè) case后常量表達(dá)式的值必須 互不相同 ; 3、 case 與后面的常量表達(dá)式之間 必須空格 ; 4、當(dāng) switch后的表達(dá)式的值與某個(gè)常量表達(dá)式值相同,執(zhí) 行該 case后的語句,并 繼續(xù)執(zhí)行其他 case后的語句 。 5、 case 后的語句允許有 多個(gè) ,可以 不用大括號(hào) 括起來。 第 4章 選擇程序設(shè)計(jì) 注意 例 1: #include main( ) int a; scanf(“%d”, switch(a) case 1:printf(“Mondayn”); case 2:printf(“Tuesdayn”); case 3:printf(“Wednesda
11、yn”); case 4:printf(“Thursdayn”); case 5:printf(“Fridayn”); case 6:printf(“Saturdayn”); case 7:printf(“Sundayn”); default:printf(“errorn”); 輸入一個(gè)數(shù)字,輸出一個(gè)對 應(yīng)的英文星期單詞。 思 考 第 4章 選擇程序設(shè)計(jì) break; break; break; break; break; break; break; 1、 break語句 用于跳出 switch語句; 2、 switch語句也 可以嵌套 。 3、 switch語句中 可用可不用 break語句
12、。 第 4章 選擇程序設(shè)計(jì) 注意 score score/10 score=90 10, 9 80=score 90 8 70=score 80 7 60=score 70 6 score=90 輸出 等級(jí) A 如果 80=score 90 輸出 等級(jí) B 如果 70=score 80 輸出 等級(jí) C 如果 60=score 70 輸出 等級(jí) D 如果 score60 輸出 等級(jí) E #include main( ) int score; scanf(“%d” , switch (score /10) case 10: case 9: printf(等級(jí) An);break; case 8:
13、printf(等級(jí) Bn); break; case 7: printf(等級(jí) Cn);break; case 6: printf(等級(jí) Dn);break; default: printf(等級(jí) En); 第 4章 選擇程序設(shè)計(jì) 返回 表達(dá)式為 數(shù)值類型表達(dá)式 例如: 1、 if(5) printf(“OK!n”); 2、 if(6.3) printf(“OK!n”); 3、 if(a) printf(“OK!n”); 表達(dá)式為 賦值表達(dá)式 例如: 4、 if(x=y-5) printf(“x0n”); else printf(“x=0n”); 表達(dá)式為 變量 例如: 5、 if(x) pr
14、intf(“OK!n”); 第 4章 選擇程序設(shè)計(jì) 例如: 輸入兩個(gè)數(shù) a、 b,要求按由小到大的順序輸出。 #include main( ) float a , b , t ; printf(input two number:n) ; scanf(%f%f , if(ab) t=a ; a=b ; b=t; /* 如果 ab,則交換 a和 b */ printf(sort:%5.3f , %5.3f , a , b ) ; 第 4章 選擇程序設(shè)計(jì) 返回 例如: #include main( ) int x=1,y=0,a=1,b=0; switch(x) case 1: switch(y)
15、case 0:a+; case 1:b+;break; case 2: a+;b+;break; printf(“a=%d,b=%dn”,a,b); 返回 第 4章 選擇程序設(shè)計(jì) 1 a=2 0 b=1 2 a=3 1 b=2 a=3,b=2 第 5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) go to 語句 形式: go to 標(biāo)號(hào) ; 功能:無條件轉(zhuǎn)去執(zhí)行標(biāo)號(hào)后所標(biāo)識(shí)的語句。 注意 :標(biāo)號(hào)是 標(biāo)識(shí)符 ,不能是數(shù)字 。 例 9 計(jì)算 s=1+2+100 的值。 #include main( ) int n,s=0; n=1; loop:if(n=100) s=s+n;n+;goto loop; printf(“%d”,s); 返回