1. 程式人生 > 其它 >關係運算符和邏輯運算子課後習題

關係運算符和邏輯運算子課後習題

關係運算符和邏輯運算子

  1. 請問 char *name = “sunyu” 和 char name[] = {‘s’, ‘u’, ‘n’, ‘y’, ‘u’} 是否等價?
    答:不等價。char *name = “sunyu” 應該與 char name[] = {‘s’, ‘u’, ‘n’, ‘y’, ‘u’ ‘\0’} 等價。

  2. 下邊程式碼中的表示式 a = 0 && 1 = b 編譯會出錯,你知道為什麼嗎?

#include <stdio.h>

int main()
{
        int a = 1, b = 2;

        a = 0 &&
1 = b; return 0; }

答:正確的表示式應該是這樣的:a == 0 && 1 == b。少打了一個等號=,使得表示式先計算邏輯運算子的值為 0 && 1 結果為假(0),便出現了 0 = b 這樣錯誤的賦值語句。

  1. 請用小括號和數字序號體現表示式中運算子的優先順序,並口算出表示式的值(下邊假設變數 a、b、c、d 的值分別是 1、2、3、4)
    比如:a + b * c - d
    寫成:(a + (b * c))– d
    求值:(1 + (2 * 3)) – 4
    A. a + b && c / d
    B. a = b && c - d
    C. ‘a’ + ‘b’ <= ‘c’ || a / b + d % c
    D. !!a + !b + c – a – c
    E. a = b - c || a % b && c / d

答:A. a + b && c / d
寫成:(a + b) && (c / d)
求值:(1 + 2) && (3 / 4)

B. a = b && c - d
寫成:a = (b && (c – d))
求值:a = (2 && (3 - 4))

C. ‘a’ + ‘b’ <= ‘c’ || a / b + d

寫成:((‘a’ + ‘b’) <= ‘c’) || ((a / b) + d % c)
求值:((97 + 98) <= 99) || ((1 / 2) + (4 % 3)

D. !!a + !b + c – a - c
寫成:((((!(!a)) + (!b)) + c) – a) – c
求值:((((!(!1)) + (!2)) + 3) – 1) – 3

E. a = b - c || a % b && c / d
寫成:a = ((b – c) || ((a % b) && (c / d)
求值:a = ((b - c) || (1 && 0))

  1. 請用一個邏輯表示式來判斷某一年是否為閏年。
    某一年份如果符合下邊 A 或 B 其中一個,我們稱之為閏年:
    A. 能被 4 整除,但不能被 100 整除;
    B. 能被 400 整除。
    答:邏輯表示式如下:
(year%4==0&&year%100!=0)||year%400==0;