c++ switch語句的使用(case 後面可以跟N個語句)
switch語句在處理多分支語句時是一種清晰結構(相比於一系列的if else if ...),
在一般書上的講解時會給出如下的一般形式:
<span style="font-size:18px;">switch(表示式){
case 常量表達式1: 語句1;
case 常量表達式2: 語句2;
…
case 常量表達式n: 語句n;
default: 語句n+1;
}</span>
switch後的括號裡面是一個表示式,根據這個表示式返回的值(通常是多值),我們來執行相應的語句,這就是下面
case語句所做的事情,case相當於一個if判斷,所謂的常量表達式n
當我們看到這個switch語句的一般形式的時候,我們總會產生一系列的疑問:
(1)switch 語句在實際應用中一般怎麼用?、
(2)case 後面可以跟幾個語句?
接下來我們來解答這兩個問題:
(1)在實際中我們習慣在每一個case語句最後加上一個break,跳出switch語句,如果我們不寫break表示式,
那麼程式還是會繼續向下執行,去判斷下一個case,從而浪費時間。當然你也可以利用這個特點來處理一些問題,
就像研發最常跟測試他們說的那句話:“這是特性,不是BUG!”,最後default語句可有可無,具體的選擇看具體的
情況。
(2)上面的一般形式中case語句後只寫了一個語句,最開始學的時候我特別疑惑,case後的語句只能跟
一個嗎?我有很多語句怎麼辦,我在case語句裡面還有if語句怎麼辦,其實這些擔憂都是沒有必要的,在case
語句後面可以有N多語句,這些語句的書寫跟在正常邏輯下無區別,你在一個函式裡怎麼寫if語句,在這裡就怎麼
寫。下面我給出個具體例子來演示switch語句:
switch(in_temp) { case 1: if (input_num == 0) { i--; }else { i--; grade -= grade / 10; // if grade < 0 set grade = 0 grade = grade > 0 ? grade : 0; if (input_num > number) { printf("Bigger than number\n",input_num); }else { printf("Smaller than number\n",input_num); } } break; case 2: i--; grade -= (grade / 10); grade = grade > 0 ? grade : 0; // is even number if (input_num % 2 == 0) { printf("Not prim\n"); }else { printf("Is prim\n"); } break; case 3: i--; grade -= (grade / 10); grade = grade > 0 ? grade : 0; //test the Prim() function //number = 457; if (Prim(number)) { int leftn; int rightn; scanf("%d %d", &leftn, &rightn); // output the Prim in [leftn,rightn] for (int j = leftn; j <= rightn; ++j) { /* code */ if (Prim(j)) { printf("%d ", j); } } printf("\n"); }else printf("Not \n"); break; case 4: i--; grade -= (grade / 10); grade = grade > 0 ? grade : 0; // judge the number can divide by 3 if (number % 3 == 0) { /* code */ printf("can multi by 3\n"); }else printf("can not multi by 3\n"); break; default: break; } }
由上面的例子,我們就很清晰的看到了switch語句的應用。
另外還要注意一點:switch(val)裡的引數val,在C++中只能取INT及以下的引數型別(char short等),
想string這些複雜的資料型別是不支援的。
謝謝你的閱讀!
相關推薦
c++ switch語句的使用(case 後面可以跟N個語句)
switch語句在處理多分支語句時是一種清晰結構(相比於一系列的if else if ...), 在一般書上的講解時會給出如下的一般形式: <span style="font-size:18px;">switch(表示式){ case 常量表達式1:
SQL中的條件判斷語句(case when zhen if,ifnull)用法
簡介: case具有兩種格式。簡單case函式和case搜尋函式。這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case部分將會被自動忽略。
a+aa+aaa+aaaa+aaaaa+......+aaaaa(n個a),java大數比c更簡單
開胃話:每次遇到大數的計算都沒來得及整理,今天覺得有必要以一道例題來總結一下了,c中一般都是用字串來解決的,而java中就可以用BigInteger來解決了,大家可以看看下面連結的這篇部落格,寫的比較完善的: https://blog.csdn.net/dongchengrong/art
多分支語句(case)
環境配置: 測試指令碼:test.sh pattern:模式 式 格局 樣式 case語法: case $1 in pattern1) 語句1 ;; pattern2) 語句2 ;;
【NCRE】---拼接SQL語句(Case....When語句)
#region 將答案和分數更新到資料庫中 李少然 2015年12月26日10:09:07 /// <summary> /// 將答案和分數更新到資料庫中 /// </summary> /// <param na
按月統計訂單數量報表SQL語句(CASE 和DECODE的使用)
本文主要是使用CASE 和DECODE實現按月統計訂單數量,通過此示例希望能幫助讀者理解CASE和DECODE在ORCALE中的使用。 1.使用CASE實現: 按 Ctrl+C 複製程式碼 按 Ctrl+C 複製程式碼 這是一條按月統計每個OPERATING_WAREHOUSE_CODE訂單數量的SQL
SQL中的條件判斷語句(case when zhen)用法
簡介: case具有兩種格式。簡單case函式和case搜尋函式。這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case
C#流程控制語句--叠代語句(while,do....while, for , foreach)
語句 dash rgs sum 換行 pac 定義 奇數 就會 叠代語句:有的時候,可能需要多次執行同一塊代碼。函數中的第一個語句先執行,接著是第二個語句,依此類推。 叠代語句:while(先檢查後執行) while(條件表達式 bool類型) { 代碼語句
thinkPHP輸出sql語句(3.2和5.0通用)
blog dump bsp where select() div 5.0 lec asd //5.0$qwe = db::table(‘think_user‘)->where(‘id‘,1)->fetchsql()->column(‘name‘); d
MySQL學習——SQL查詢語句(連接查詢&子查詢)(三)
例如 必須 創建 clas 在一起 另一個 記錄 any 操作 一:連接查詢: 連接查詢是將倆個或者倆個以上的表按照某個條件連接起來,從中選擇需要的數據,連接查詢同時查詢倆個或者倆個以上的表時使用,當不同的表中存在表示相同意義的字段時,可以通過該字段來連接這幾個表,例如
js獲取n分鐘(或n小時或n個月)後(或前)的時間(日期)
atd 格式 format pos 根據 get 標題 設置 pre 標題有點繞,其實意思就是根據系統當前時間,獲取n分鐘或n小時或n個月後的時間。 例如:當前時間下,獲取10分鐘後的時間。 var date=new Date(); //1. js獲
python3-開發進階 heapq模塊(如何查找最大或最小的N個元素)
div lam 優勢 排序 portfolio res 函數 多個 items 一、怎樣從一個集合中獲得最大或者最小的 N 個元素列表? heapq 模塊有兩個函數:nlargest() 和 nsmallest() 可以完美解決這個問題。 import heap
牛客多校3 C-Shuffle Cards(rope大法解決數組分塊)
always href dict sil however cli ++ gic -s Shuffle Cards 鏈接:https://www.nowcoder.com/acm/contest/141/C來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間
Linux C---檔案操作(fopen、fwrite、fread等)的許可權問題
C語言中對檔案進行操作必須開啟檔案,開啟檔案主要涉及到fopen函式。 fopen函式的原型為: FILE* fopen(const char *path,const char *mode) 其中path為檔案路徑,mode為開啟方式1)對於檔案路徑,只需注意若未明確給出絕對路徑,則
線性表及其應用C語言實現(資料結構複習最全筆記)
一、順序表的表示與實現 1.線性表的順序結構定義 #define LIST_INIT_SIZE 100 //線性表儲存空間的初始分配量 #define LISTINCREMENT 10 //線性表儲存空間的分配增量 typedef struct { ElemType* el
C程式設計--指標(用“ 函式 ”對“ 陣列 ” 進行操作)
函式運算元組 說明:如果有一個實引數組,想要在函式中改變此陣列中的元素的值,實參與形參的對應關係有以下4種情況: 1、實參:陣列名 ;; 形參:陣列名 2、實參:陣列名 ;; 形參:指標變數 3、實參:指標變數;; 形參:指標變數 4、實參:指標變
C程式設計--指標(對 “ 陣列 ” 進行輸入輸出操作)
指標引用陣列元素 方法一、下標法 : 如a[i]形式 方法二、指標法 : 如*(a+i)、*(p+i)形式。其中a是陣列名,p是指向陣列元素的指標變數 ** 問題:有一個整形陣列a,有10個元素,要求輸出陣列中的全部元素** 下標法
C - Dungeon Master (第一道queue實現的BFS)
#include<cstdio>#include<queue>#include<cstring>using namespace std;char a[35][35][35];int vis[35][35][35];int ob[6][3]={{-1,0,0},{1,0,0}
c++三大特性(繼承,封裝,多型)及過載與多型的區別。
封裝可以隱藏實現細節,使得程式碼模組化,繼承可以擴充套件已存在的模組,它們目的都是為了:程式碼重用。而多型是為了實現另一個目的:介面重用。 封裝是面向物件的特徵之一,是物件和類概念的主要特性。封裝是把過程和資料包圍起來,
C程式設計案例(二分法求方程的根)
原理 設函式f(x)在[a,b]上連續,且f(a)*f(b)<0,則表明f(x)在[a,b]上至少有一個零點。 微積分中的介值定理。然後通過二分割槽間,縮小區間範圍,當小到一定的精確度的時候,這個x就是我們所求的近似根了。 問題描述: 用二分法求下面方程在區間