今天小編和大家分享一下C語言C++編程學習中分支和跳轉的相關知識點词顾,需要的小伙伴可以參考一下
關鍵字:if , else , switch , continue , break , case , default , goto
運算符:&&下愈、||、敞嗡?:
函數(shù):getcher( ) , putcher( ) , ctype.h系列
如何使用if和if?else語句,如何嵌套它們
在更復雜的測試表達式中用邏輯運算符組合關系表達式
C的條件運算符
switch語句
break、continue和goto語句
使用C的字符I/O函數(shù):getcher( ) 和 putcher( )
?ctype.h頭文件提供的字符分析函數(shù)系列
if語句
在最開始运挫,書上的引入程序是一個通過輸入一些天數(shù)的溫度吕漂,來計算在這些天中亲配,0度以下的寒冷天氣戰(zhàn)的百分比
[cpp]view plaincopy
/*colddays.c?--?找出0度以下的天數(shù)占總天數(shù)的百分比*/??
#include???
int?main(void)??
{??
const?int?FOREEEZING?=?0;??
float?temperature;??
int?cold_days?=?0;??
int?all_days?=?0;??
printf("Enter?the?list?of?daily?low?temperatures.\n");??
printf("Use?Celsius,?and?enter?q?to?quit.\n");??
while(scanf("%f",?&temperature)?==?1){??
????????all_days++;??
if?(temperature?<?FOREEEZING){??
????????????cold_days++;??
????????}??
????}??
if?(all_days?!=?0){??
printf("%d?days?total:?%.lf%%?were?below?freezing.\n",??
all_days,?100.0?*?(float)?cold_days?/?all_days);??
????}??
if?(all_days?==?0){??
printf("No?date?entered!\n");??
????}??
return?0;??
?}???
Enter the list of daily low temperatures.
Use Celsius, and enter q to quit.
12 5 -2.5 0 6 8 -3 -10 5 10 q
10 days total: 30% were below freezing.
程序分析:
程序中while循環(huán)的測試條件利用scanf()的返回值來結束循環(huán),因為scanf()在讀取到非數(shù)字是會返回0 惶凝。temperature的類型是float類型而不是int類型弃榨,這樣擴大了temperature的取值范圍,不僅僅局限于整數(shù)梨睁。
小編推薦一個學C語言/C++的學習裙【 六二七鲸睛,零一二,四六四 】坡贺,無論你是大牛還是小白官辈,是想轉行還是想入行都可以來了解一起進步一起學習!裙內(nèi)有開發(fā)工具遍坟,很多干貨和技術資料分享拳亿!
while循環(huán)中首次出現(xiàn)了if語句:
[cpp]view plaincopy
if?(temperature?<?FOREEEZING){??
????cold_days++;??
}??
if語句只是計算機,如果剛剛讀取的temperature值小于0愿伴,就執(zhí)行cold_days++肺魁,即寒冷天數(shù)加一天;如果不隔节,就跳過cold_days++鹅经,讓while循環(huán)繼續(xù)讀取下一個數(shù)。
while循環(huán)之后怎诫,又通過兩個if語句來控制程序的輸出瘾晃。如果上面輸入了數(shù)據(jù),就打印前一個if語句中的結果幻妓;反之告訴執(zhí)行者沒有輸入數(shù)據(jù)(當然這里其實并不需要使用兩個if語句蹦误,后面會有介紹)。在printf()語句中肉津,把百分比強制轉換為float類型强胰,其實并沒有必要加上強制轉換,因為100.0*cold_days求值時已經(jīng)被轉換成了float類型妹沙,這么做是為了讓程序能適應各種編譯器偶洋。
if語句被稱為分支語句,或者選擇語句初烘,因為它相當于一個交叉點涡真,程序又在兩個分支中選擇一條執(zhí)行分俯,if語句的通用形式如下:
if(expression){
????statement
}
如果對表達式(expression)求值為真,就執(zhí)行語句(statement)否則就不執(zhí)行哆料。這似乎與while語句很相似缸剪,但是while語句可以執(zhí)行多次,而if語句只會執(zhí)行一次东亦。
if?else?語句
上面的if語句杏节,可讓程序選擇執(zhí)行一條語句或者跳過,還有一種語句典阵,即if?else語句奋渔,可以讓程序在兩條語句中進行選擇。
[cpp]view plaincopy
if?(all_days?!=?0){??
printf("%d?days?total:?%.lf%%?were?below?freezing.\n",??
all_days,?100.0?*?(float)?cold_days?/?all_days);??
}??
if?(all_days?==?0){??
printf("No?date?entered!\n");??
}??
現(xiàn)在可以將這段用if?else語句來寫
[cpp]view plaincopy
if?(all_days?!=?0){??
printf("%d?days?total:?%.lf%%?were?below?freezing.\n",??
all_days,?100.0?*?(float)?cold_days?/?all_days);??
}??
else{??
printf("No?date?entered!\n");??
}???
這里的else相當于原來的if (all_days == 0)壮啊。
if?else語句的通用格式如下:
if(expression){
????statement1
}
else{
statement2
}
如果對表達式(expression)求值為真嫉鲸,就執(zhí)行statement1,否則就執(zhí)行statement2 。這里的語句不一定只是一條語句歹啼,也可以是很多條玄渗,需要用大括號{}將其包括起來,形成一個塊狸眼,當然這也算是一條語句藤树。如果有多條語句而沒有大括號,就會出錯拓萌。