選擇結(jié)構(gòu)要求程序員指定程序要評(píng)估或測試的一個(gè)或多個(gè)條件,以及在條件被確定為真時(shí)要執(zhí)行的語句,以及可選的,如果條件要執(zhí)行的其他語句被認(rèn)定是假的。
下面顯示的是大多數(shù)編程語言中的典型選擇結(jié)構(gòu)的一般形式

判斷語句
C 語言提供了以下類型的判斷語句。

? : 運(yùn)算符(三元運(yùn)算符)
條件運(yùn)算符 ? :,可以用來替代?if...else?語句。它的一般形式如下:
Exp1 ? Exp2 : Exp3;
其中,Exp1、Exp2 和 Exp3 是表達(dá)式。請(qǐng)注意,冒號(hào)的使用和位置。
評(píng)估Exp1。如果是,那么Exp2會(huì)被評(píng)估并成為整個(gè)值
如果Exp1為false,則計(jì)算Exp3,其值將成為表達(dá)式的值。

實(shí)例
以下實(shí)例通過輸入一個(gè)數(shù)字來判斷它是否為奇數(shù)或偶數(shù)
#include int main()
{
int num;
printf("輸入一個(gè)數(shù)字 : ");
scanf("%d",&num); (num%2==0)?printf("偶數(shù)"):printf("奇數(shù)");
}
三目(元)運(yùn)算的例子
#include
int A=10;int B=20;char buy;int sum,number;
int main(){
printf("以下是本店的商品及價(jià)格:\n A 商品每個(gè)十元;\n B 商品每個(gè)二十元;\n\n");
printf("請(qǐng)輸入你所需的產(chǎn)品(A 或 B):");
scanf("%c",&buy);
printf("請(qǐng)輸入所需的數(shù)量:");
scanf("%d",&number);
sum=buy=='A'?A*number:B*number;
printf("\n你所需要的%d個(gè)%c商品總共%d元。\n",number,buy,sum);
return 0;
}
switch語句一般形式
意思是先計(jì)算表達(dá)式的值,再逐個(gè)和 case 后的常量表達(dá)式比較,若不等則繼續(xù)往下比較,若一直不等,則執(zhí)行 default 后的語句;若等于某一個(gè)常量表達(dá)式,則從這個(gè)表達(dá)式后的語句開始執(zhí)行,并執(zhí)行后面所有 case 后的語句。
與 if 語句的不同:if 語句中若判斷為真則只執(zhí)行這個(gè)判斷后的語句,執(zhí)行完就跳出 if 語句,不會(huì)執(zhí)行其他 if 語句;而 switch 語句不會(huì)在執(zhí)行判斷為真后的語句之后跳出循環(huán),而是繼續(xù)執(zhí)行后面所有 case 語句。在每一 case 語句之后增加 break 語句,使每一次執(zhí)行之后均可跳出 switch 語句,從而避免輸出不應(yīng)有的結(jié)果.
switch案例
#include
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");
}
}