C語言複習2(2018.11.13)
邏輯運算子和邏輯表示式
&&邏輯與
||邏輯或
!邏輯非
!大於 算數運算子 大於 關係運算符 大於 &&和|| 大於賦值運算子
與運算子&&和或運算子||均為雙目運算子。具有左結合性。非運算子!為單目運算子, 具有右結合性。
“&&”和“||”低於關係運算符,“!”高於算術運算子。
if語句
if(表示式)
{
語句1;
}
else
{
語句2;
}
if語句的巢狀
if(表示式) { if(表示式) { 語句1; } else { 語句2; } } else { 語句3; }
條件運算子和條件表示式
表示式1?表示式2:表示式3
eg:
if(a>b) max=a;
else max=b;
//可用條件表示式寫為:
max=(a>b)?a:b;
//執行該語句的語義是:如 a>b 為真,則把 a 賦予 max,否則把 b 賦予 max。
使用條件表示式時,還應注意以下幾點:
- 條件運算子的運算優先順序低於關係運算符和算術運算子,但高於賦值符。 因此 max=(a>b)?a:b 可以去掉括號而寫為 max=a>b?a:b
- 條件運算子?和:是一對運算子,不能分開單獨使用。
- 條件運算子的結合方向是自右至左。 例如: a>b?a:c>d?c:d 應理解為 a>b?a:(c>d?c:d) 這也就是條件表示式巢狀的情形,即其中的表示式 3 又是一個條件表示式。
SWITCH語句
switch(表示式)
{
case 常量表達式 1: 語句 1;
case 常量表達式 2: 語句 2;
…
case 常量表達式 n: 語句 n;
default : 語句 n+1;
}
計算表示式的值。 並逐個與其後的常量表達式值相比較,當表示式的值與 某個常量表達式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行後面所有 case 後的語句。如表示式的值與所有 case 後的常量表達式均不相同時,則執行 default 後 的語句。
eg:
輸入1-7的數字,輸出時星期幾
int main()
{
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a)
{
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 7:printf("Sunday\n");break;
default:printf("error\n");
}
}
迴圈語句
while語句
while(判斷條件)
{
語句;
}
//直到不滿足條件後,結束迴圈
do
{
迴圈體;
}
while(條件);
//先執行迴圈體一次後,再按段條件。所以do-while結構至少執行一次迴圈體;
//直到不滿足條件後,結束迴圈
for語句
for(表示式1;表示式2;表示式3)
{
迴圈體;
}
執行過程如下:
- 先求解表示式 1。
- 求解表示式 2,若其值為真(非 0),則執行 for 語句中指定的內嵌語句,然後執行下面 第 3)步;若其值為假(0),則結束迴圈,轉到第 5)步。
- 求解表示式 3。
- 轉回上面第 2)步繼續執行。
- 迴圈結束,執行 for 語句下面的一個語句。
break和continue語句
break語句
當 break 語句用於 do-while、for、while 迴圈語句中時,可使程式終止迴圈而執行迴圈 後面的語句, 通常 break 語句總是與 if 語句聯在一起。即滿足條件時便跳出迴圈。
continue語句
continue 語句的作用是跳過迴圈本中剩餘的語句而強行執行下一次迴圈。continue 語 句只用在 for、while、do-while 等迴圈體中,常與 if 條件語句一起使用,用來加速迴圈。
陣列
在C語言中使用陣列必須先進行定義。 一維陣列的定義方式為: 型別說明符 陣列名 [常量表達式]; 其中: 型別說明符是任一種基本資料型別或構造資料型別。 陣列名是使用者定義的陣列識別符號。 方括號中的常量表達式表示資料元素的個數,也稱為陣列的長度。
陣列元素的一般形式為:
陣列名[下標]
其中下標只能為整型常量或整型表示式。如為小數時,C 編譯將自動取整。 例如: a[5] a[i+j] a[i++]