精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

if-else判斷語句和switch-case選擇語句介紹

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2022-10-08 10:19 ? 次閱讀

1、if-else判斷語句

一個基本的if語句由一個關鍵字if開頭,跟上在括號()里邊的是表示邏輯條件的表達式,然后是一對大括號{}中間是若干條語句,如果條件的邏輯表達式的結果不是零,那么就執行大括號中間的語句,否則就跳過不執行。

if的返回值為真或假,可以用bool型變量進行存儲,占用一字節。

當if的條件滿足或者不滿足的時候要執行的語句也可以是一條或者多條if-else 語句,這時候叫嵌套的if語句,而else 總是和最接近的 if 匹配。

tips:

在if或else后面總加上{}大括號,即使只有一條語句的時候。風格就是三觀。常見的錯誤:忘了大括號,if后面的分號,錯誤使用 == 和 = ,沒有匹配或令人困惑的else

例子題目:

描述請判斷它能否被 3,5,7 整除,并輸出以下信息

能同時被 3, 5, 7 整除(直接輸出3 5 7,每個數中間一個空格);

只能被其中兩個數整除(輸出兩個數,小的在前,大的在后。例如:3 5或者3 7或者5 7,中間用空格分隔);

只能被其中一個數整除(輸出這個除數);

不能被任何數整除,輸出小寫字符'n',不包括單引號。:

如:

輸入 105

輸出 3 5 7

解決答案:

int main(void) 
{    int a;  
  scanf("%d", &a); 
 //輸入一個數//if圓括號所表示的 如果 a能被3整除  并且  a也能被 5整除  并且  a也能被7整除  
  if (a % 3 == 0 && a % 5 == 0 & a % 7 == 0) {//如果圓括號條件里邊的條件滿足      
  printf("3 5 7");//執行這條語句    }    
else if (a % 3 == 0 && a % 5 == 0&& a % 7 !=0) {//否則,判斷這條語句是否滿足        printf("3 5");//滿足執行這條語句   //下面的依次類推    }  
  else if (a % 3 == 0 && a % 7 == 0 && a % 5 != 0) {        printf("3 7");   } 
  else if (a % 5 == 0 && a % 7 == 0 && a % 3 != 0) {        printf("5 7");   }   
  else if (a % 3 == 0 && a % 5 != 0 && a % 7 != 0) {        printf("3");    }   
  else if (a % 5 == 0 && a % 3 != 0 && a % 7 != 0) {        printf("5");    }   
  else if (a % 7 == 0 && a % 5 != 0 && a % 3 != 0) {        printf("7");    }  
  else {        printf("n");    }


return 0;}


2、switch-case選擇語句

switch語句是多分支選擇語句.用來實現多分支選擇結構

Switch 函數圓括號的參數列表可由多對表達式和數值組成,ANSI標準允許它為任何類型.,表達式是由左至右加以計算的,而數值則會在第一個相關的表達式為 True 時返回。如果其中有部分不成對,則會產生一個運行錯誤。

當表達式的值與某一個case后面的常量表達式的值相等時,就執行此case后面的語句,若所有的case中的常量表達式的值都沒有與表達式的匹配的,就執行default后面的語句,每一個case的常量表達式的值必須互不相同,否則就會出現互相矛盾的現象,(對表達式的同一個值,有兩種或多種執行方案),當沒有一個表達式為 True,或者第一個為 True 的表達式的對應值為 Null時,Switch 會返回一個Null值。

switch 后面的表達式不能跟double,float,long,String ,boolean,可以接int,short,byte,char,

返回值:

switch(表達式, 值1, 結果1, 值2, 結果2, ...)

如果表達式的結果是值1,整個函數返回結果1

如果表達式的結果是值2,整個函數返回結果2

如果表達式的結果是值3,整個函數返回結果3

雖然它只返回其中的一個值,但是 Switch會計算所有的表達式。因此應該注意到其所產生的副作用。例如,只要其中一個表達式導致被零除錯誤,則運行就會發生錯誤。

例子: //請輸入一個數字n,然后輸出相應的星期幾

   int main(void) {  


  int n;    scanf("%d", &n);  
  switch (n) {//判斷輸入進來的數值是什么   
 case 1:printf("Monday"); break;//n=1就輸出此語句,平且用break函數退出   
 case 2:printf("Tuesday"); break;  
  case 3:printf("Wednesday"); break;   
 case 4:printf("Thursday"); break;  
  case 5:printf("Friday"); break;  
  case 6:printf("Sturday"); break;   
 case 7:printf("Sunday"); break;      
  default :        printf("error");   
 }   
 return 0;}

說明:

在使用switch-case函數時,在語句完畢后加上break函數表示將不再執行下面的語句直接結束switch函數了。如果什么也不加,則是繼續執行。

一:從“優缺點”分析

if…else

優點:使用靈活,代碼空間小 ;

缺點:效率低,因為 if else 必須遍歷所有的可能值;

switch…case

優點:代碼結構清晰,效率高;

缺點:

1、不夠靈活,switch 僅支持 int, char, unsigned char 等基本類型。

2、代碼空間大,因為它要生成跳表,特別是當 case 常量分布范圍很大但實際有效值又比較少的情況,switch…case 的空間利用率將變得很低。對于 switch,實際上是根據 case 最小值與最大值,維系了一段連續的內存空間,以空間換取時間;

二:從“底層原理”分析

if…else

系統是自上而下逐個條件去判斷,直到符合條件,所以應將機率大的條件置于最前面。

switch…case

switch 語句根據一個整數索引值進行多重分支,底層采用跳轉表這種數據結構。跳轉表是一個數組,表項 i 對應代碼段的地址。當 switch 索引值等于表項 i 時采取對應的程序操作。

可簡單理解為:

執行 switch 時生成一個長度為最大 case+1 的數組,程序首先判斷 switch 變量是否大于最大 case 常量,若大于,則跳到 default 分支處理。否則取得數組索引號為 switch 變量值大小,取得數組對應值即為相應 case 代碼塊地址,程序接著跳到此地址執行,完成分支的跳轉。

三:從“選擇性”分析

當選擇分支較少時,選用 if else 比 switch…case 的效率要高。一般 3個 以內的分支我會用 if…else 結構,大于3個的分支我都會用 switch…case,個人習慣,這樣結構看著舒服。

當選擇分支較多時,選用switch…case結構會提高程序的效率。

四:總結

switch…case 只能處理 case 為常量的情況,對非常量的情況是無能為力的。

例如 if (x > 1 && x < 100),是無法使用 switch…case 來處理的。

所以,switch 只能是在常量選擇分支時比 if…else 效率高,但是 if…else 能應用于更多的場合,它比較靈活。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4262

    瀏覽量

    85669
  • Switch
    +關注

    關注

    1

    文章

    532

    瀏覽量

    58161
  • 函數
    +關注

    關注

    3

    文章

    4304

    瀏覽量

    62429

原文標題:【零基礎學C語言】知識總結四:if-else判斷語句和switch-case選擇語句

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    詳解C語言中if-elseswitch-case語句

    一個基本的if語句由一個關鍵字if開頭,跟上在括號()里邊的是表示邏輯條件的表達式,然后是一對大括號{}中間是若干條語句,如果條件的邏輯表達式的結果不是零,那么就執行大括號中間的語句,否則就跳過不執行。
    發表于 10-17 10:40 ?3003次閱讀

    C語言中if語句if-else語句switch語句詳解

    在C語言中,有三種條件判斷結構:if語句if-else語句switch語句
    發表于 08-18 16:36 ?1.2w次閱讀
    C語言中if<b class='flag-5'>語句</b>、<b class='flag-5'>if-else</b><b class='flag-5'>語句</b>和<b class='flag-5'>switch</b><b class='flag-5'>語句</b>詳解

    python判斷語句

    python判斷語句:if1. 簡單小例子如果滿足條件 A,則執行代碼塊 a,否則執行代碼塊 b。類似這樣的控制流程語句,稱之為條件語句。它的基本形式是if 判斷條件: 執行
    發表于 02-25 16:22

    C++語言基礎講解視頻Switch分支條件判斷語句

    C++語言基礎講解視頻Switch分支條件判斷語句
    發表于 01-14 08:00 ?7次下載

    Proteus之if-else語句的應用

    Proteus之if-else語句的應用,很好的Proteus資料,快來學習吧。
    發表于 04-18 14:49 ?0次下載

    FPGA學習系列:if-elsecase

    設計背景:不管是在什么軟件和硬件語言,我們在我們的代碼中都或多或少的用到這兩條語句,if..elsecase語句,今天我們將學習verilog中的這兩條
    的頭像 發表于 06-01 16:59 ?1.2w次閱讀
    FPGA學習系列:<b class='flag-5'>if-else</b>與<b class='flag-5'>case</b>

    C語言的switch case多分支選擇語句的詳細資料說明

    1、switch-case開關語句是一種多分支選擇語句,用來實現多方向條件分支。雖然采用if-else條件
    發表于 07-12 17:39 ?1次下載
    C語言的<b class='flag-5'>switch</b> <b class='flag-5'>case</b>多分支<b class='flag-5'>選擇</b><b class='flag-5'>語句</b>的詳細資料說明

    FPGA代碼經驗 case,casez,casex語句

    使用case語句代替嵌套的if-else將會產生更易讀的代碼,更好的邏輯利用率和更高的性能。
    的頭像 發表于 12-11 10:42 ?6197次閱讀

    不會有人不知道怎么優雅的替換if-else語句

    來自:love1024.blog.csdn.net/article/details/104955363 場景日常開發,if-else語句寫的不少吧??當邏輯分支非常多的時候,if-else套了一層
    的頭像 發表于 07-28 15:46 ?1406次閱讀
    不會有人不知道怎么優雅的替換<b class='flag-5'>if-else</b><b class='flag-5'>語句</b>吧

    python判斷語句的詳細說明

    python判斷語句:if 1. 簡單小例子 如果滿足條件 A,則執行代碼塊 a,否則執行代碼塊 b。類似這樣的控制流程語句,稱之為條件語句。 它的基本形式是 if 判斷條件: 執行
    的頭像 發表于 02-25 16:22 ?2330次閱讀

    什么是SystemVerilog-決策語句-if-else語句

    決策語句(Decision statements)允許程序塊的執行流程根據設計中信號的當前值分支到特定語句。SystemVerilog有兩個主要的決策語句:if…else
    的頭像 發表于 02-09 14:15 ?1100次閱讀
    什么是SystemVerilog-決策<b class='flag-5'>語句</b>-<b class='flag-5'>if-else</b><b class='flag-5'>語句</b>?

    條件判斷語句(if語句

    條件判斷語句,作為任何編程語言都不可缺少的內容,在C語言中也不例外。條件判斷語句可以讓程序的功能更加復雜,從而實現各種各樣的功能。
    的頭像 發表于 02-21 15:24 ?3378次閱讀
    條件<b class='flag-5'>判斷語句</b>(if<b class='flag-5'>語句</b>)

    Java中switch語句的使用

    在Java學習中我們見過很多有意思的語句if語句、for語句、while語句switch語句
    的頭像 發表于 03-08 11:03 ?1072次閱讀
    Java中<b class='flag-5'>switch</b><b class='flag-5'>語句</b>的使用

    Verilog代碼:if-elsecase的電路結構和區別

    每個if-else就是一個2選1mux器。當信號有明顯優先級時,首先要考慮if-else,但是if嵌套過多也會導致速度變慢;if語句結構較慢,但占用面積小。 嵌套的if語句如果使
    的頭像 發表于 11-29 15:10 ?2856次閱讀

    java中的switch語句 case的取值

    Java中的switch語句是一種用于多重條件判斷語句,用于根據不同的條件執行不同的代碼塊。在switch
    的頭像 發表于 11-30 16:05 ?1082次閱讀