Cswitchcase語句應用經驗講解_第1頁
Cswitchcase語句應用經驗講解_第2頁
Cswitchcase語句應用經驗講解_第3頁
Cswitchcase語句應用經驗講解_第4頁
Cswitchcase語句應用經驗講解_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+ switch-case語句應用經驗講解C+ switch-case語句是一個循環(huán)判斷語句,在實際編程中起著非常重要的作用。希望這篇文章中介紹的內容能幫助大家解決一些問題。在C+編程語言中,存在著一些判斷語句,比如if,C+ switch-case語句等等。我們在這篇文章中會針對C+ switch-case語句的基本使用方法進行詳細的介紹,希望能給大家?guī)硪恍椭?。if語句處理兩個分支,處理多個分支時需使用if-else-if結構,但如果分支較多,則嵌套的if語句層就越多,程序不但龐大而且理解也比較困難.深層嵌套的else-if語句往往在語法上是正確的,但邏輯上卻沒有正確地反映程序員的意圖

2、。例如,錯誤的else-if匹配很容易被忽略。添加新的條件和邏輯關系,或者對語句做其他的修改,都很難保證正確性。因此,C/C+語言又提供了一個專門用于處理多分支結構的條件選擇語句,稱為switch語句,又稱開關語句.它可以很方便地來實現(xiàn)深層嵌套的if/else邏輯。使用C+ switch-case語句直接處理多個分支(當然包括兩個分支).其一般形式為:1 switch(表達式) 2 3 case 常量表達式1: 4 語句1; 5 break; 6 case 常量表達式2: 7 語句2; 8 break; 9 10 case 常量表達式n: 11 語句n; 12 break; 13 defaul

3、t: 14 語句n+1; 15 break; 16 C+ switch-case語句的執(zhí)行流程是:首先計算switch后面圓括號中表達式的值,然后用此值依次與各個case的常量表達式比較,若圓括號中表達式的值與某個case后面的常量表達式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇break語句就退出switch語句;若圓括號中表達式的值與所有case后面的常量表達式都不等,則執(zhí)行default后面的語句n+1,然后退出switch語句,程序流程轉向開關語句的下一個語句.以上是switch-case的正規(guī)寫法,default語句總是寫在最后。但是,如果把default語句間在了case的中間

4、,執(zhí)行的結果又是怎樣的呢?筆者測試了一下幾種有代表性的情況,把結果簡單羅列如下:A. 每個語句中break齊整17 switch(c) 18 19 case '1': 20 printf("1n"); 21 break; 22 default: 23 printf("defaultn"); 24 break; 25 case '2': 26 printf("2n"); 27 break; 28 case '3': 29 printf("3n"); 30 break;

5、31 此種情況最為規(guī)整,default寫在中間跟寫在最后的效果一致。B. default語句后沒有break32 switch(c) 33 34 case '1': 35 printf("1n"); 36 break; 37 default: 38 printf("defaultn"); 39 / break; 40 case '2': 41 printf("2n"); 42 break; 43 case '3': 44 printf("3n"); 45 break;

6、 46 此種情況下,輸入分別為 1、 2、 3、 4,對應的輸出分別為 1、 2 、3、 default 2(換行省略了,實際運行時有換行的);即此種情況下遵循A中的執(zhí)行順序和一般的標號規(guī)則。C. 最后一個case沒有break47 switch(c) 48 49 case '1': 50 printf("1n"); 51 break; 52 default: 53 printf("defaultn"); 54 break; 55 case '2': 56 printf("2n"); 57 break;

7、 58 case '3': 59 printf("3n"); 60 / break; 61 此種情況下,輸入分別為 1、 2、 3、 4,對應的輸出分別為1、2、3、default.可見實際的運行效果并不等同于把default語句挪到最后的運行效果。否則,輸入為3時,輸出應該為 3 default.D. default和最后一個case都沒有break62 switch(c) 63 64 case '1': 65 printf("1n"); 66 break; 67 default: 68 printf("def

8、aultn"); 69 / break; 70 case '2': 71 printf("2n"); 72 break; 73 case '3': 74 printf("3n"); 75 / break; 76 由上面A,B,C三種情況的運行結果,我們可以推測出D這種情況的運行結果。當輸入分別為 1、2、3、4時,輸出為1、2、3、default 2. 結果與B的情況相同。#include <iostream>using namespace std;int main()int year,month,d

9、ay,no;cout<<"Year:"cin>>year;cout<<"Month:"cin>>month;cout<<"Day:"cin>>day;if(year%400=0|year%4=0&&year%100!=0) /是閏年的情況switch(month)case 1:no=day;break;case 2:no=31+day;break;case 3:no=1+31+28+day;break;case 4:no=1+31+28+31+da

10、y;break;case 5:no=1+31+28+31+30+day;break;case 6:no=1+31+28+31+30+31+day;break;case 7:no=1+31+28+31+30+31+30+day;break;case 8:no=1+31+28+31+30+31+30+31+day;break;case 9:no=1+31+28+31+30+31+30+31+31+day;break;case 10:no=1+31+28+31+30+31+30+31+31+30+day;break;case 11:no=1+31+28+31+30+31+30+31+31+30+31

11、+day;break;case 12:no=1+31+28+31+30+31+30+31+31+30+31+30+day;break;default:cout<<"你的輸入有誤!"<<endl;return 0;else /不是閏年的情況switch(month)case 1:no=day;break;case 2:no=31+day;break;case 3:no=31+28+day;break;case 4:no=31+28+31+day;break;case 5:no=31+28+31+30+day;break;case 6:no=31+28+

12、31+30+31+day;break;case 7:no=31+28+31+30+31+30+day;break;case 8:no=31+28+31+30+31+30+31+day;break;case 9:no=31+28+31+30+31+30+31+31+day;break;case 10:no=31+28+31+30+31+30+31+31+30+day;break;case 11:no=31+28+31+30+31+30+31+31+30+31+day;break;case 12:no=31+28+31+30+31+30+31+31+30+31+30+day;break;defau

13、lt:cout<<"你的輸入有誤!"<<endl;return 0;cout<<"你輸入的日期是這一年的第"<<no<<"天"<<endl;system("pause");return 0;#include<stdefx.h>#include <iostream>using namespace std;int main() int mark; cout<<"輸入百分制成績:" cin>

14、;>mark; mark=mark/10; switch(mark) case 0: case 1: case 2: case 3: case 4: case 5: cout<<"不及格"<<endl; break; case 6: cout<<"及格"<<endl; break; case 7: cout<<"中"<<endl; break; case 8: cout<<"良"<<endl; break; cas

15、e 9: cout<<"優(yōu)"<<endl; break; default: if(mark=10) cout<<"優(yōu)"<<endl; else cout<<"你輸入的分數超出范圍,請重新輸入:" cin>>mark; return 0;#include<stdefx.h>#include <iostream>using namespace std;int main() int mark; cout<<"輸入百分制成績:

16、" cin>>mark; if(mark<110&&mark>100) cout<<"你輸入的分數超出范圍,請重新輸入:" cin>>mark; mark=mark/10; switch(mark) case 0: case 1: case 2: case 3: case 4: case 5: cout<<"不及格"<<endl; break; case 6: cout<<"及格"<<endl; break; case 7: cout<<"中"<<endl; break; c

溫馨提示

  • 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

提交評論