關係運算符和邏輯運算子課後習題
阿新 • • 發佈:2021-01-14
關係運算符和邏輯運算子
-
請問 char *name = “sunyu” 和 char name[] = {‘s’, ‘u’, ‘n’, ‘y’, ‘u’} 是否等價?
答:不等價。char *name = “sunyu” 應該與 char name[] = {‘s’, ‘u’, ‘n’, ‘y’, ‘u’ ‘\0’} 等價。 -
下邊程式碼中的表示式 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 這樣錯誤的賦值語句。
- 請用小括號和數字序號體現表示式中運算子的優先順序,並口算出表示式的值(下邊假設變數 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
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
求值:((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))
- 請用一個邏輯表示式來判斷某一年是否為閏年。
某一年份如果符合下邊 A 或 B 其中一個,我們稱之為閏年:
A. 能被 4 整除,但不能被 100 整除;
B. 能被 400 整除。
答:邏輯表示式如下:
(year%4==0&&year%100!=0)||year%400==0;