程序員指定一個或多個要評估或測試的條件,以及條件爲真時要執行的語句(必需的)和條件爲假時要執行的語句(可選的)。html
C 語言把任何非零和非空的值假定爲 true,把零或 null 假定爲 false。程序員
下面是大多數編程語言中典型的判斷結構的通常形式:express
C 語言提供瞭如下類型的判斷語句。點擊連接查看每一個語句的細節。編程
語句 | 描述 |
---|---|
if 語句 | 一個 if 語句 由一個布爾表達式後跟一個或多個語句組成。 |
if...else 語句 | 一個 if 語句 後可跟一個可選的 else 語句,else 語句在布爾表達式爲假時執行。 |
嵌套 if 語句 | 您能夠在一個 if 或 else if 語句內使用另外一個 if 或 else if 語句。 |
switch 語句 | 一個 switch 語句容許測試一個變量等於多個值時的狀況。 |
嵌套 switch 語句 | 您能夠在一個 switch 語句內使用另外一個 switch 語句。 |
能夠用來替代 if...else 語句。它的通常形式以下:編程語言
Exp1 ? Exp2 : Exp3;
其中,Exp一、Exp2 和 Exp3 是表達式。請注意,冒號的使用和位置。測試
? 表達式的值是由 Exp1 決定的。若是 Exp1 爲真,則計算 Exp2 的值,結果即爲整個 ? 表達式的值。若是 Exp1 爲假,則計算 Exp3 的值,結果即爲整個 ? 表達式的值。spa
#include<stdio.h> htm
int main() blog
{ get
int num;
printf("輸入一個數字 : ");
scanf("%d",&num);
(num%2==0)?printf("偶數"):printf("奇數");
}
經過輸入一個數字來判斷它是否爲奇數或偶數
1.舉一個三目(元)運算的例子:
#include <stdio.h> int A=10; int B=20; char buy; int sum,number; int main(){ printf("如下是本店的商品及價格:\n A 商品每一個十元;\n B 商品每一個二十元;\n\n"); printf("請輸入你所需的產品(A 或 B):"); scanf("%c",&buy); printf("請輸入所需的數量:"); scanf("%d",&number); sum=buy=='A'?A*number:B*number; printf("\n你所須要的%d個%c商品總共%d元。\n",number,buy,sum); return 0; }
2.switch語句通常形式:
switch(表達式) { case 常量表達式1:語句1; case 常量表達式2:語句2; ... default:語句n+1; }
意思是先計算表達式的值,再逐個和 case 後的常量表達式比較,若不等則繼續往下比較,若一直不等,則執行 default 後的語句;若等於某一個常量表達式,則從這個表達式後的語句開始執行,並執行後面全部 case 後的語句。
與 if 語句的不一樣:if 語句中若判斷爲真則只執行這個判斷後的語句,執行完就跳出 if 語句,不會執行其餘 if 語句;而 switch 語句不會在執行判斷爲真後的語句以後跳出循環,而是繼續執行後面全部 case 語句。在每一 case 語句以後增長 break 語句,使每一次執行以後都可跳出 switch 語句,從而避免輸出不該有的結果。
#include <stdio.h> 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"); } }
一個 if 語句 由一個布爾表達式後跟一個或多個語句組成。
C 語言中 if 語句的語法:
if(boolean_expression) { /* 若是布爾表達式爲真將執行的語句 */ }
若是布爾表達式爲 true,則 if 語句內的代碼塊將被執行。若是布爾表達式爲 false,則 if 語句結束後的第一組代碼(閉括號後)將被執行。
C 語言把任何非零和非空的值假定爲 true,把零或 null 假定爲 false。
#include <stdio.h>
int main ()
{ /* 局部變量定義 */
int a = 10;
if( a < 20 ) /* 使用 if 語句檢查布爾條件 */
{
printf("a 小於 20\n" ); /* 若是條件爲真,則輸出下面的語句 */
}
printf("a 的值是 %d\n", a); return 0;
}
當上面的代碼被編譯和執行時,它會產生下列結果:
a 小於 20 a 的值是 10
一個 if 語句 後可跟一個可選的 else 語句,else 語句在布爾表達式爲 false 時執行。
C 語言中 if...else 語句的語法:
if(boolean_expression) { /* 若是布爾表達式爲真將執行的語句 */ } else { /* 若是布爾表達式爲假將執行的語句 */ }
若是布爾表達式爲 true,則執行 if 塊內的代碼。若是布爾表達式爲 false,則執行 else 塊內的代碼。
C 語言把任何非零和非空的值假定爲 true,把零或 null 假定爲 false。
#include <stdio.h>
int main ()
{
/* 局部變量定義 */
int a = 100; /* 檢查布爾條件 */
if( a < 20 )
{
printf("a 小於 20\n" ); /* 若是條件爲真,則輸出下面的語句 */
}
else
{
printf("a 大於 20\n" ); /* 若是條件爲假,則輸出下面的語句 */
}
printf("a 的值是 %d\n", a);
return 0;
}
當上面的代碼被編譯和執行時,它會產生下列結果:
a 大於 20 a 的值是 100
一個 if 語句後可跟一個可選的 else if...else 語句,這可用於測試多種條件。
當使用 if...else if...else 語句時,如下幾點須要注意:
C 語言中的 if...else if...else 語句的語法:
if(boolean_expression 1) { /* 當布爾表達式 1 爲真時執行 */ } else if( boolean_expression 2) { /* 當布爾表達式 2 爲真時執行 */ } else if( boolean_expression 3) { /* 當布爾表達式 3 爲真時執行 */ } else { /* 當上麪條件都不爲真時執行 */ }
#include <stdio.h> int main () { /* 局部變量定義 */ int a = 100; /* 檢查布爾條件 */ if( a == 10 ) { /* 若是 if 條件爲真,則輸出下面的語句 */ printf("a 的值是 10\n" ); } else if( a == 20 ) { /* 若是 else if 條件爲真,則輸出下面的語句 */ printf("a 的值是 20\n" ); } else if( a == 30 ) { /* 若是 else if 條件爲真,則輸出下面的語句 */ printf("a 的值是 30\n" ); } else { /* 若是上面條件都不爲真,則輸出下面的語句 */ printf("沒有匹配的值\n" ); } printf("a 的準確值是 %d\n", a ); return 0; }
當上面的代碼被編譯和執行時,它會產生下列結果:
沒有匹配的值 a 的準確值是 100
在 C 語言中,嵌套 if-else 語句是合法的,這意味着您能夠在一個 if 或 else if 語句內使用另外一個 if 或 else if 語句。
C 語言中 嵌套 if 語句的語法:
if( boolean_expression 1) { /* 當布爾表達式 1 爲真時執行 */ if(boolean_expression 2) { /* 當布爾表達式 2 爲真時執行 */ } }
#include <stdio.h>
int main ()
{
int a = 100; /* 局部變量定義 */
int b = 200;
if( a == 100 ) /* 檢查布爾條件 */
{
/* 若是條件爲真,則檢查下面的條件 */
if( b == 200 )
{
/* 若是條件爲真,則輸出下面的語句 */
printf("a 的值是 100,且 b 的值是 200\n" );
}
}
printf("a 的準確值是 %d\n", a );
printf("b 的準確值是 %d\n", b );
return 0;
}
結果:
a 的值是 100,且 b 的值是 200 a 的準確值是 100 b 的準確值是 200
一個 switch 語句容許測試一個變量等於多個值時的狀況。每一個值稱爲一個 case,且被測試的變量會對每一個 switch case 進行檢查。
C 語言中 switch 語句的語法:
switch(expression)
{
case constant-expression : statement(s);
break; /* 可選的 */
case constant-expression : statement(s);
break; /* 可選的 */
/* 您能夠有任意數量的 case 語句 */
default : /* 可選的 */
statement(s);
}
switch 語句必須遵循下面的規則:
#include <stdio.h>
int main ()
{
char grade = 'B'; /* 局部變量定義 */
switch(grade)
{
case 'A' : printf("優秀!\n" );
break;
case 'B' : case 'C' : printf("良好\n" );
break;
case 'D' : printf("及格\n" );
break;
case 'F' : printf("未及格\n" );
break;
default : printf("成績無效\n" );
}
printf("您的成績是 %c\n", grade );
return 0;
}
結果:
良好 您的成績是 B
能夠把一個 switch 做爲一個外部 switch 的語句序列的一部分,便可以在一個 switch 語句內使用另外一個 switch 語句。即便內部和外部 switch 的 case 常量包含共同的值,也沒有矛盾。
C 語言中 嵌套 switch 語句的語法:
switch(ch1) { case 'A': printf("這個 A 是外部 switch 的一部分" ); switch(ch2) { case 'A': printf("這個 A 是內部 switch 的一部分" ); break; case 'B': /* 內部 B case 代碼 */ } break; case 'B': /* 外部 B case 代碼 */ }
#include <stdio.h>
int main ()
{
/* 局部變量定義 */
int a = 100;
int b = 200;
switch(a)
{
case 100: printf("這是外部 switch 的一部分\n");
switch(b) {
case 200: printf("這是內部 switch 的一部分\n");
}
}
printf("a 的準確值是 %d\n", a );
printf("b 的準確值是 %d\n", b ); return 0;
}
當上面的代碼被編譯和執行時,它會產生下列結果:
這是外部 switch 的一部分 這是內部 switch 的一部分 a 的準確值是 100 b 的準確值是 200