C語(yǔ)言實(shí)例講解選擇語(yǔ)句的使用
一、if…else選擇語(yǔ)句詳解
1. 圖示if…else流程
用圖示來(lái)表示 if…else 語(yǔ)句其實(shí)就是當(dāng)條件為真的時(shí)候執(zhí)行某一部分的內(nèi)容,當(dāng)條件為假的時(shí)候就跳過(guò)這部分的內(nèi)容接著往下執(zhí)行。
2. if…else代碼流程
if (表達(dá)式)
{
語(yǔ)句塊1;
}
else
{
語(yǔ)句塊2;
}
if…else語(yǔ)句最常見(jiàn)的流程就是上面這樣。當(dāng)表達(dá)式為真的時(shí)候執(zhí)行語(yǔ)句塊1的內(nèi)容,當(dāng)表達(dá)式為假的時(shí)候執(zhí)行語(yǔ)句塊2的內(nèi)容。那么可能有些人就會(huì)問(wèn)了,表達(dá)式什么樣才是真,什么樣才是假?回答這個(gè)問(wèn)題很簡(jiǎn)單,只要表達(dá)式的結(jié)果為0,那么表達(dá)式就是假,其余情況都是真。
3. if…else的三種情況
3.1 if語(yǔ)句
if (表達(dá)式)
{
語(yǔ)句塊1;
}
當(dāng)只有 if 的時(shí)候,表達(dá)式為真就執(zhí)行語(yǔ)句塊1,否則就跳過(guò)語(yǔ)句塊的內(nèi)容。
3.2 if…else語(yǔ)句
if (表達(dá)式)
{
語(yǔ)句塊1;
}
else
{
語(yǔ)句塊2;
}
當(dāng) if…else 的時(shí)候,表達(dá)式為真就執(zhí)行語(yǔ)句塊1,表達(dá)式為假就執(zhí)行語(yǔ)句塊2。
3.3 if…else if…else語(yǔ)句
if (表達(dá)式1)
{
語(yǔ)句塊1;
}
else if(表達(dá)式2)
{
語(yǔ)句塊2;
}
else
{
語(yǔ)句塊3;
}
當(dāng)表達(dá)式1為真的時(shí)候就只執(zhí)行語(yǔ)句塊1的內(nèi)容,其余語(yǔ)句塊不執(zhí)行。當(dāng)表達(dá)式1為假并且表達(dá)式2為真的時(shí)候就只執(zhí)行語(yǔ)句塊2的內(nèi)容,其余語(yǔ)句塊不執(zhí)行。當(dāng)表達(dá)式1和表達(dá)式2都為假的時(shí)候執(zhí)行語(yǔ)句塊3的內(nèi)容,其余語(yǔ)句塊不執(zhí)行。在這種情況下,else if是可以無(wú)限加的,并不是只能有一個(gè)else if。
需要注意的是else不可以單獨(dú)出現(xiàn),if可以單獨(dú)出現(xiàn),并且else總是和它同級(jí)的那個(gè)if 相匹配。
4. 代碼示例
源代碼:
#include <stdio.h> int main() { int scores = 0; printf("Please enter student scores: "); scanf("%d", &scores); if (scores < 0) { printf("input error\n"); } else if (scores < 60) { printf("Underachievement!\n"); } else if (scores < 80) { printf("academically qualified!\n"); } else if (scores <= 100) { printf("perfect grade!\n"); } else { printf("input error\n"); } return 0; }
二、三目運(yùn)算符(? :)詳解
表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3
三目運(yùn)算符是一個(gè)運(yùn)算符,并且C語(yǔ)言中有且只有一個(gè)三目運(yùn)算符。使用三目運(yùn)算符可以用來(lái)代替 if…else 語(yǔ)句。上面三目運(yùn)算符的流程為,如果表達(dá)式1為真,則將表達(dá)式2的結(jié)果作為最終運(yùn)算結(jié)果,否則就將表達(dá)式3的結(jié)果作為最終運(yùn)算結(jié)果。舉例例子具體說(shuō)明下:
源代碼:
#include <stdio.h> int main() { int a = 0, b = 0, max = 0; printf("請(qǐng)輸入兩個(gè)數(shù): "); scanf("%d%d", &a, &b); max = a > b ? a : b; printf("兩數(shù)中較大的數(shù)是: %d", max); return 0; }
三、switch…case選擇語(yǔ)句詳解
1. 圖示switch…case流程
switch…case語(yǔ)句就是,如果表達(dá)式1的 結(jié)果和下面的表達(dá)中任意一個(gè)表達(dá)式相等,就執(zhí)行對(duì)應(yīng)的代碼塊的內(nèi)容,而其余代碼塊中的內(nèi)容不會(huì)被執(zhí)行。
2. switch…case代碼流程
switch(表達(dá)式1)
{
case 表達(dá)式2:
語(yǔ)句塊2;
break;
case 表達(dá)式3:
語(yǔ)句塊3;
break;
case 表達(dá)式4:
語(yǔ)句塊4;
break;
……
default:
語(yǔ)句塊n;
break;
}
switch…case語(yǔ)句在代碼中的流程一般如上所示。其中表達(dá)式1的結(jié)果一般是整形常量或字符常量。當(dāng)表達(dá)式的結(jié)果和 case 后面的表達(dá)式結(jié)果一致時(shí),就會(huì)執(zhí)行對(duì)應(yīng)的語(yǔ)句塊的內(nèi)容,否則,就會(huì)進(jìn)入default中,執(zhí)行語(yǔ)句塊n 。然后在break的時(shí)候跳出大括號(hào)的內(nèi)容。
在使用 switch…case 語(yǔ)句時(shí)有兩點(diǎn)需要大家特別注意。
- 如果語(yǔ)句塊后面沒(méi)有break,那么程序就會(huì)繼續(xù)執(zhí)行下面的內(nèi)容,直到遇到下一個(gè)break或后面沒(méi)有內(nèi)容時(shí)而退出。比方說(shuō),表達(dá)式1和表達(dá)式3的結(jié)果相同,程序就會(huì)執(zhí)行語(yǔ)句塊3的內(nèi)容,如果有上面的break,switch…case 語(yǔ)句到此結(jié)束,直接跳出 switch 大括號(hào)中的所有內(nèi)容。但是如果這個(gè)沒(méi)有break,那么程序執(zhí)行完語(yǔ)句塊3后還會(huì)接著執(zhí)行語(yǔ)句塊4,直到遇到 break 或 switch 大括號(hào)后面沒(méi)有內(nèi)容而退出。
- 在 switch…case 語(yǔ)句中,default 和 case 的位置沒(méi)有關(guān)系,編譯器都會(huì)先找 case,等 case 不滿足條件之后才會(huì)找 default。因?yàn)橐恍┏R?guī)和標(biāo)準(zhǔn)的寫(xiě)法 default 都會(huì)在最后面,但是在面試筆試中為了考察大家對(duì)于 switch…case 語(yǔ)句的掌握程度,會(huì)將 default 寫(xiě)在開(kāi)頭或中間,所以這個(gè)時(shí)候大家就要特別注意了。
3. 代碼示例
#include <stdio.h> int main() { int scores = 0; char grade = 'Z'; printf("Please enter student scores: "); scanf("%d", &scores); if (scores < 0) { printf("input error\n"); } else if (scores < 60) { grade = 'C'; } else if (scores < 80) { grade = 'B'; } else if (scores <= 100) { grade = 'A'; } else { printf("input error\n"); } switch(grade) { case 'A': printf("perfect grade!\n"); break; case 'B': printf("academically qualified!\n"); break; case 'C': printf("Underachievement!\n"); break; default: printf("input error\n"); break; } return 0; }
到此這篇關(guān)于C語(yǔ)言實(shí)例講解選擇語(yǔ)句的使用的文章就介紹到這了,更多相關(guān)C語(yǔ)言選擇語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C/C++ Linux出錯(cuò)處理函數(shù)(strerror與perror)的使用
我們知道,系統(tǒng)函數(shù)調(diào)用不能保證每次都成功,必須進(jìn)行出錯(cuò)處理,這樣一方面可以保證程序邏輯正常,另一方面可以迅速得到故障信息。本文主要為大家介紹兩個(gè)出錯(cuò)處理函數(shù)(strerror、perror)的使用,需要的可以參考一下2023-01-01C語(yǔ)言拓展實(shí)現(xiàn)Lua sleep函數(shù)
這篇文章主要介紹了C語(yǔ)言拓展實(shí)現(xiàn)Lua sleep函數(shù),本文使用C語(yǔ)言寫(xiě)出sleep函數(shù),編譯后在Lua中調(diào)用,需要的朋友可以參考下2015-04-04用位圖排序無(wú)重復(fù)數(shù)據(jù)集實(shí)例代碼(C++版)
本文講解如何用位圖排序無(wú)重復(fù)的數(shù)據(jù)集,我們使用C++實(shí)現(xiàn)一下這個(gè)方法2013-11-11