逍遙自在學C語言 | 條件控制的正確使用姿勢

来源:https://www.cnblogs.com/Wayne123/archive/2023/05/09/17385665.html
-Advertisement-
Play Games

前言 在C語言中,有三種條件判斷結構:if語句、if-else語句和switch語句。 一、人物簡介 第一位閃亮登場,有請今後會一直教我們C語言的老師 —— 自在。 第二位上場的是和我們一起學習的小白程式猿 —— 逍遙。 二、if語句 基本語法 if (條件) { // 代碼塊1 } 代碼示例 #i ...


前言

在C語言中,有三種條件判斷結構:if語句、if-else語句和switch語句。

一、人物簡介

  • 第一位閃亮登場,有請今後會一直教我們C語言的老師 —— 自在。

img

  • 第二位上場的是和我們一起學習的小白程式猿 —— 逍遙。

img

二、if語句

  • 基本語法
if (條件) {
    // 代碼塊1
}
  • 代碼示例
#include <stdio.h>

int main() 
{
  int num = 5;
  if (num > 0) {
    printf("這個數為正數.\n");
  }
  return 0;
}
  • 運行結果

三、if-else語句

  • 基本語法
if (條件) {
    // 代碼塊1
} else {
    // 代碼塊2
}
  • 代碼示例
#include <stdio.h>

int main() 
{
  int num = -2;
  if (num > 0) {
    printf("這個數為正數.\n");
  } else {
    printf("這個數為負數.\n");
  }
  return 0;
}
  • 運行結果

if語句嵌套使用

  • 代碼示例
#include <stdio.h>

int main() {
    int num = 3;
    if (num > 0) {
        if (num < 5) {
            printf("num在1到4之間\n");
        } else {
            printf("num大於等於5\n");
        }
    } else {
        printf("num小於等於0\n");
    }
    return 0;
}

在這個示例中,外層的if語句判斷num是否大於0,如果成立,進入內層的if語句繼續判斷num是否小於5;

如果不成立,執行else語句塊,輸出"num小於等於0"。

num的值是3,它既符合外層if語句的條件,也符合內層if語句的條件,所以程式輸出"num在1到4之間"。

  • 運行結果

if else語句的鏈式使用

  • 代碼示例
#include <stdio.h>

int main() {
    int score = 85;
    if (score >= 90) {
        printf("優秀\n");
    } else if (score >= 80) {
        printf("良好\n");
    } else if (score >= 70) {
        printf("中等\n");
    } else if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }
    return 0;
}

在這個示例中,if else語句被鏈式使用,程式從上到下依次判斷score的值是否大於等於90、是否大於等於80、是否大於等於70、是否大於等於60,最終輸出對應的成績等級。

score的值是85,它大於等於80,但小於90,所以程式輸出"良好"。

  • 運行結果

四、switch語句

  • 基本語法
switch (expression) {
    case constant1:
        statement1;
        break;
    case constant2:
        statement2;
        break;
    ...
    default:
        statementN;
        break;
}

  • switch語句的執行過程如下:
  1. 表達式的值被計算。
  2. 表達式的值被依次與各個case後的常量進行比較,直到找到與之匹配的常量。
  3. 如果找到匹配的常量,執行該常量對應的代碼塊,並跳出switch語句。
  4. 如果沒有找到匹配的常量,執行default對應的代碼塊(如果有),並跳出switch語句。

switch語句中的case標簽可以是整數、字元或枚舉常量。

每個case標簽必須是唯一的,且必須以冒號(:)結尾。

case後面的代碼塊中可以包含任意數量的語句,用花括弧({})來組成代碼塊。

switch語句的default標簽是可選的,它通常放在case標簽的最後面。如果沒有匹配到任何case標簽,那麼default標簽下的代碼塊將被執行。

default標簽只能出現一次,且必須放在最後一個case標簽之後,否則會引發編譯錯誤。

switch基礎用法

  • 下麵是一個簡單的switch語句示例,用於根據輸入的數字輸出對應的星期幾:
#include <stdio.h>

int main() 
{
    int day;
    printf("請輸入數字(1-7):");
    scanf("%d", &day);
    switch (day) {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期日\n");
            break;
        default:
            printf("輸入錯誤!\n");
            break;
    }
    return 0;
}
  • 運行結果

switch高級用法

除了基本用法外,switch語句還有一些高級用法,可以更靈活地使用。

1、case標簽穿透

在switch語句中,如果沒有在一個case語句塊中使用break語句,那麼程式會從這個case開始,一直執行到switch語句的結尾,這種現象被稱為case標簽穿透。

  • 下麵是一個case標簽穿透的示例:
#include <stdio.h>

int main() {
    int num = 3;
    switch (num) {
        case 1:
        case 2:
            printf("num是1或2\n");
            break;
        case 3:
        case 4:
            printf("num是3或4\n");
            break;
        default:
            printf("num不是1、2、3、4\n");
            break;
    }
    return 0;
}

在這個示例中,num的值是3,它既符合case 3的條件,也符合case 4的條件,但是由於case 3的語句塊中使用了break語句,所以程式執行完case 3之後就跳出了switch語句,不會繼續執行case 4的語句塊。

  • 運行結果

2、switch語句嵌套

  • 在C語言中,switch語句可以嵌套使用,例如:
#include <stdio.h>

int main() 
{
    int num = 1;
    switch (num) {
        case 1:
            printf("num是1\n");
            switch (num) {
                case 2:
                    printf("num是2\n");
                    break;
                default:
                    printf("num不是2\n");
                    break;
            }
            break;
        case 3:
            printf("num是3\n");
            break;
        default:
            printf("num既不是1也不是3\n");
            break;
    }
    return 0;
}

在這個示例中,switch語句被嵌套使用,內層的switch語句只有在外層的case 1被匹配時才會執行。

  • 運行結果

小結

通過這篇文章,我們學會了

1、if語句

2、if-else語句

3、switch語句


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 為了讓頁面保活更加穩定,你們是怎麼做的? 我用一行配置實現了 Vue頁面保活是指在用戶離開當前頁面後,可以在返回時恢覆上一次瀏覽頁面的狀態。這種技術可以讓用戶享受更加流暢自然的瀏覽體驗,而不會被繁瑣的操作打擾。 為什麼需要頁面保活? 頁面 ...
  • 1. 什麼是C#組合模式? 組合模式是一種結構型設計模式,它允許將對象組合成樹形結構以表示“整體/部分”層次結構。使用此模式,客戶端可以按相同的方式處理單個對象和對象集合,而不必關註它們是單個對象還是組合對象。組合對象本身也可以作為容器,包含其他組合對象,形成更複雜的樹形結構。 在C#中,組合模式是 ...
  • 本文翻譯自國外論壇 medium,原文地址:https://medium.com/@pradeesh-kumar/how-to-become-a-good-backend-engineer-9da75202a104 讓我們一起看看國外開發者認為優秀後端工程師需要掌握哪些技能。 誰是後端工程師? 本質 ...
  • 第1關:位元組輸入/輸出流實現數據的保存和讀取 package step1; import java.io.\*; import java.util.\*; public class SortArray { public static void main(String[] args) { _/\*\* ...
  • 本文首發於公眾號:Hunter後端 原文鏈接:Django筆記三十九之settings配置介紹 這一篇筆記介紹 Django 里 settings.py 里一些常用的配置項,這些配置有一些是在之前的筆記中有過介紹的,比如 logging 的日誌配置,session 的會話配置等,這裡就只做一下簡單的 ...
  • redis-主從模式弊端: 一、master節點異常shutdown後,從機原地待命,從機數據可以查詢(不可以寫入),等待主機重啟歸來 二、複製延時,信號衰減 redis-哨兵監控: 是什麼? 哨兵即為吹哨人,可以巡查監控後臺master主機是否故障,如果故障可以根據投票數自動將一個從庫轉換為新的m ...
  • 實驗五 Java多線程程式設計 實驗目的 1. 掌握Runnable介面實現多線程的方法 2. 掌握Thread類實現多線程的用法 3. 掌握Java語言中多線程編程的基本方法 ...
  • 哈嘍大家好我是鹹魚,今天給大家分享一個能夠提升運維效率的 python 腳本 鹹魚平常在工作當中通常會接觸到下麵類似的場景: 容災切換的時候批量對機器上的配置文件內容進行修改替換 對機器批量替換某個文件中的欄位 對於 Linux 機器,鹹魚可以寫個 shell 腳本或者直接批量使用 sed 命令就能 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...