c語言的選擇結構(一)

2021-03-01 c語言大神養成記



前面已經介紹了順序結構的程序設計,在大多數情況下,由於數據處理的需要,程序不會是單一的順序結構,而是順序、選擇、循環三種結構的複雜組合。這章更多的還是會通過寫一些程序來呈現出來選擇結構的內容。

例如:

(一)工程師崗位面試(關係運算符和邏輯運算符)

題目要求:上海一家IT企業招聘c/c++開發工程師,滿足以下任職要求者可以獲得面試機會。

(1)學歷:計算機相關專業畢業,碩士及以上學歷;

(2)工作年限:兩年以上c/c++開發工程師崗位從業經驗;

(3)業務要求:熟練或精通c/c++和數據壓縮算法。

滿足以上三個條件,即相應表達式的值為真,那麼求職者就可以收到面試通知,從以上面試條件中,我們可以觀察到,每個條件都涉及到多個判斷(子條件),而這些判斷之間存在著一定的邏輯關係,後面介紹的關係運算和邏輯運算就是描述他們的邏輯關係。


運行結果:

面試成功


(二)關係運算符和關係表達式

關係表達式是由關係運算符、括號、常量、變量和函數等運算對象構成的式子。在c語言中關係運算符共有六種。


關係運算符
含義
優先級
結合性
<
小於這幾個運算符優先級相同,但比下面高。
左結合
<=
小於或等於
>
大於
>=
大於或等於
==
等於
這幾個運算符優先級相同,但比上面低。
!=
不等於


上面例題中出現的的working_life>2就是關係表達式,由於關係運算符的優先級低於算術運算符,高於賦值運算符,所以下面的關係表達式有其相應的等價式子。

a>b+c                                   等價於                                a>(b+c)

a>b==c                                等價於                                (a>b==c)

a=b>c                                   等價於                                 a=(b>c)

關係運算實際上是比較運算。關係表達式的值是一個邏輯值,即「真」或「假」。

(三)邏輯運算符和邏輯表達式

邏輯表達式是由邏輯運算符、括號和其他運算對象構成的式子,它的值反映了邏輯運算的結果。


邏輯運算符
含義
優先級
結合性

邏輯非、單目
高於&&和||
右結合
&&
邏輯與、雙目
高於||
左結合
||邏輯或、雙目
低於&&
左結合


通過邏輯運算符可以寫出邏輯表達式,邏輯表達式的形式一般如下:

表達式 邏輯運算符 表達式 或邏輯運算符 表達式

例如:a||b、age>25&&sex==『f』

運算符「&&」和「||」的優先級低於算術運算符和關係運算符。而運算符「!」的優先級高於算術運算符和關係運算符,在上面例題中3個邏輯表達式來選擇符合條件的求職者,3種邏輯運算符的運算規則如下。

(1)a&&b,當a和b都為真時結果為真,否則結果為假。

(2)a||b,當a和b至少一個為真時結果為真,當a和b都為假時結果為假。(3)!a,當a為真時結果為假,當a為假時結果為真。

邏輯運算的真值表:

a
b
!a
!b
a&&b
a||b
























例:設a=4,b=5,c=5,寫出下面各邏輯表達式的值。

a+b<c&&b==c                       值為0

a||b+c&&b-c                           值為1

!(a>b)&&!c||1                   值為1

!(x=a)&&(y=b)&&0         值為0

說明:

(1)邏輯表達式中任何非零的數值都被稱為「真」。

(2)在邏輯表達式的求解中,並不是所有的邏輯運算符都會被執行。

<1>a&&b&&c:只有a為真時才需要判斷b的值,只有a和b都為真時才需要判斷c的值。

<2>a||b||c:只要a為真,就不必判斷b和c的值,只有a為假時才需要判斷b,a和b都為假時才判斷c。

當左值可以決定整個表達式的值時不再要求右邊表達式的值,因此對於與(&&)運算來說,左值為0,就不再需要繼續後面的運算;對於或(||)運算來說,左值為1,就不再繼續後面的運算,這樣可以提高運算速度,有的書上把這一特點叫做「邏輯運算的短路特徵」,例如;(m=a>b)&&(n=c>d)

當a=1,b=2,c=3,d=4,m和n的原值為1

時,由於「a>b」的值為0,因此m=0,即可判斷出表達式(m=>b)&&(n=c>d)的值為0,而不必再求「n=c>d」的值,因此n的值不是0仍保持原值1。

(四)條件運算符和條件表達式

條件表達式是用條件運算符(?!:)把三個表達式連接起來的式子,其形式如下:

表達式1?表達式2:表達式3

條件運算符(?:)要求三個操作數,所以也叫三目運算符。條件表達式的求解過程是先判斷表達式1的值是否為真(非0),若為真,則計算表達式2,表達式2的值就是整個條件表達式的值,若為假(0),則計算表達式3,表達式3的值整個條件表達式的值。

請注意條件運算符的結合性為右結合。例如:「int a=1」,b=4,c=3,d=2;

條件表達式a<b?a:c<d的值是什麼?由於條件運算符的右結合性,a<b?a:c<d?c:d相當於a<b?a:(c<d?c:d),因為a<b為真,所以整個條件表達式的值就為a的值1.如果a<b為假,那麼再去計算後面的(c<d?c:d),這裡a<b為真,因此就不必計算後面的條件表達式(c<d?c:d)。



相關焦點

  • 三、C語言表達式、選擇結構
    第三章 表達式、選擇結構特別要注意:C語言中是用非0表示邏輯真的,用0表示邏輯假的。帶入為1<0<2,從數學的角度出發肯定是錯的,但是如果是C語言那麼就是正確的!因為要1<0為假得到0,表達式就變成了0<2那麼運算結果就是1,成為了真的了!c、等號和賦值的區別!
  • C語言基礎:詳細介紹四種程序結構
    下面介紹C語言的四種程序結構 。(1)順序結構 順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
  • 【C語言入門】C語言的組成結構(基礎完整篇)!
    C是一種具有模塊化設計的命令式程式語言,具有簡約、直觀的設計風格,與相對清晰、簡單的語言結構。
  • C語言程序結構2:選擇(分支)結構
    C語言程序結構3+1C語言程序結構1:選擇(分支)結構很多人覺得if嵌套比較難,其實理清楚程序結構很簡單。這是一般的選擇結構,而if嵌套就是在分支裡面又包含了一個if語句。分支可以是複合語句,多條語句裡面某一條語句可以是if選擇、循環什麼都可以。
  • C語言中「c=a+b」,這種結構合理嗎?
    C語言會同意一些"令人震驚"的結構,下面的結構是合法的嗎,我們來看看幾個例子。 c = a+++b; 以下代碼是合法的嗎,咋的一看不禁有這樣的疑問?
  • 用C語言程序比大小及C語言程序的結構
    a,b");   //輸入變量a和b的值      c=max(a,b);   //調用max函數,將得到的值賦給c      printf("max=%d\n",c);   //輸出c的值      return 0;   //返回函數值為0}   //主題函數結束//求兩個整數中的較大者的max函數int max
  • C語言程序結構1:選擇(分支)結構
    C語言程序結構3+1分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。
  • C語言簡明教程(四)選擇程序設計
    >(四)選擇程序設計實驗內容前面講述了順序結構設計,同時在裡面穿插了 C 語言的數據類型和運算符等內容。知識點條件判斷案例用 if 語句實現選擇結構關係運算符和關係表達式邏輯運算符和邏輯表達式條件運算符和條件表達式用 switch 語句實現多分支選擇結構接下來,我們將通過一些實際的例子,來熟悉 C 語言的選擇結構,以及相關語言的語法特點。
  • C語言編程工具選擇
    一、編程工具計算機處理的數據、接受的指令是二進位數據,用C語言編寫的程序需要轉變成計算機能識別的二進位,才能讓計算機工作,這個轉換過程就是使用編譯器對源程序進行編譯,雖然可以使用命令行的方式編譯源程序,但使用編程工具不僅可以編譯源程序,還可以編寫、調試等,可以簡化編程工作。
  • C語言-數據結構
    數據結構介紹程序(Program)=數據結構(Data Structure)+算法(Algorithm)數據結構是計算機專業中一門綜合性的基礎課程,它是介於數學,計算機硬體和計算機軟體的三者之間一門核心課程,同時,數據結構是設計資料庫,程序,作業系統,遊戲等等設計方面的重要基礎
  • C語言——選擇結構設計(switch語句和關係運算符及關係表達式)
    在此之前我們介紹了if選擇結構,當然了if並不能解決所有的選擇問題,例如,將學生的成績分等,按優,,良,一般這樣分的話,顯然if語句就顯得力不從心了,那麼在這時候我們就應該使用switch語句去進行操作。switch語句是多分支選擇語句,用來實現分等等問題。
  • c語言結構體數組初始化
    有關結構體數組初始化的問題struct _m_usmart_nametab usmart_nametab[]=本文引用地址:http://www.eepw.com.cn/article/201611/322298.htm{#if USMART_USE_WRFUNS==1 //如果使能了讀寫操作(void
  • C語言簡明教程(一)C語言簡單剖析
    >(一)C語言簡單剖析實驗內容本節課程將簡單介紹 C 語言的發展歷程及前景,並剖析 C 語言的編譯執行過程,寫出經典的 hello world 程序。Linux 系統就是一種類 UNIX 系統),於是改良了 B 語言,這就是今天的大名鼎鼎的 C 語言。
  • c語言——基本語法
    c語言由Dennis MacAlistair Ritchie創始,是普適性最強的一種電腦程式編輯語言,它不僅可以發揮出高級程式語言的功用,還具有彙編語言的優點。本期將簡潔地介紹c的基本語法。目錄1.輸入輸出2.選擇結構3.循環結構4.數組5.結構體6.子函數一、printf輸出格式:printf(格式控制,輸出表列);例如:printf("%d, %c\n", i, c);
  • C語言程序結構3:循環結構
    循環結構可以減少代碼重複書寫的工作量,用來描述重複執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do while循環和for循環。
  • c語言入門教程
    Brian Kernighan 和 Dennis Ritchie 出版了一本書,名叫《The C Programming Language》。這本書被 C語言開發者們稱為"K&R",很多年來被當作 C語言的非正式的標準說明。人們稱這個版本的 C語言為"K&R C"。
  • C語言基礎知識學習(一)
    c) 用戶標識符根據需要定義的標識符。一般用來給變量、函數、數組、文件等命名。用戶標誌符如果與C語言的關鍵字重名,系統報錯;若與標準庫函數重名,系統不報錯,但預定義標識符將會失去原意,代之以用戶新定義的含義。顯然如果後面用到這個函數將會報錯。
  • C語言三大結構之選擇結構
    選擇結構分為if語句和switch語句。If語句有三種基本形式,簡單if形式,if-else形式,if-else-if形式,這些又能夠互相嵌套,有很多種變式來適應現實問題,但問題常常是這些格式大家都懂,但就是玩不轉它,一到選擇的地方就犯迷糊,到底該用哪種,今天就來解決這個問題。
  • 我一 jiao 踹開了 C 語言的大門
    有要學習 C 語言的讀者也可以參照。可能有些知識學習起來比較困難,比如說二進位這種涉及到底層方面的內容,建議多次食用。當然了,學習任何一門程式語言都不容易,看一遍視頻是不夠的,可能有些知識點吸收不了。那就多看幾遍,反正我就打算再看一遍,然後把涉及到程序在電腦上敲一遍,然後記錄一些筆記,發布到我的博客上。
  • C語言 | 選擇1或2調用max或min
    「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」