《零基礎(chǔ)看得懂的C語言入門教程》——(一)脫離學(xué)習(xí)誤區(qū)
《零基礎(chǔ)看得懂的C語言入門教程》——(二)簡單帶你了解流程
《零基礎(chǔ)看得懂的C語言入門教程》——(三)輕松悟第一個程序
《零基礎(chǔ)看得懂的C語言入門教程》——(四)基本數(shù)據(jù)類型變量
《零基礎(chǔ)看得懂的C語言入門教程》——(五)變量、常量及運算
if語句在C語言中用于流程控制,也就是在程序運行時,根據(jù)滿足的條件來選擇運行不同的代碼塊。流程控制就像你計劃明早天氣如果晴朗就去跑步,假設(shè)天氣變差,下雨了就不去了。這就是不同的條件進行不同的選擇。
2.1 if語句的使用
if語句在C語言中用于判斷條件是否成立從而運行一部分代碼,我們使用一個簡單的例子介紹if語句的使用方法:
#include<stdio.h>void main(){int a=1;if(a==1){printf('變量a的值等于1');} }
以上代碼創(chuàng)建了一個變量a賦值為1。之后使用了if語句判斷a是否等于1,判斷正確則執(zhí)行語句printf('變量a的值等于1');,條件判斷不成立則不執(zhí)行 printf('變量a的值等于1');。
從以上示例可以看出if語句判斷一個條件,這個條件編寫于if之后的圓括號內(nèi);以上示例的條件為a==1;在C語言中判斷兩個值是否相等使用兩個等于號 ==,在條件的圓括號后使用一對花括號{},在花括號內(nèi)編寫條件判斷正確后需要執(zhí)行的代碼。
運行結(jié)果如下:
我們修改一下a的值改為2,查看是否會執(zhí)行 printf('變量a的值等于1');。修改后的代碼如下:
#include<stdio.h>void main(){int a=2;if(a==1){printf('變量a的值等于1');} }
運行結(jié)果如下:
從結(jié)果得知并沒有運行代碼 printf('變量a的值等于1');。
那如何使if的條件判斷不成立時有一個提示?這時可以使用else語句,else語句在條件不成立時將會執(zhí)行else語句內(nèi)的代碼,else語句的內(nèi)容也是在花括號內(nèi)編寫,不過這個花括號是在else這個關(guān)鍵字(關(guān)鍵字指C語言中已有特殊功能的標志,如int、if、float等)后。代碼如下:
#include<stdio.h>void main(){int a=2;if(a==1){printf('變量a的值等于1');} else{printf('變量a的值不等于1');}}
以上代碼在if語句的花括號后“無縫連接”了一個else關(guān)鍵字。在else關(guān)鍵字后有一對花括號,在該花括號內(nèi)編寫a不等于1時所需要的提示語句即可。
運行結(jié)果如下:
如果我想a的值等于1時輸出“哈哈哈”,a等于2時輸出“嘿嘿嘿”,a等于3時輸出“呀呀呀”,a等于其它值時輸出“我都沒猜對”;以上需求可以使用if…elseif語句實現(xiàn)。代碼如下:
#include<stdio.h>void main(){int a=2;if(a==1){printf('哈哈哈');} else if(a==2){printf('嘿嘿嘿');} else if(a==3){printf('呀呀呀');}else{printf('我都沒猜對');} }
以上代碼在if之后的else關(guān)鍵字后添加了if(注意if前面有個空格),隨后一個圓括號,圓括號內(nèi)編寫其它條件,滿足則會執(zhí)行當(dāng)前else if 語句的花括號內(nèi)的代碼,當(dāng)所有條件都不對的時候,執(zhí)行else語句,也是在最末位的語句。
運行結(jié)果如下:
以上代碼還可以改一下,讓我們在都沒猜對的值的情況下輸出值,代碼如下:
#include<stdio.h>void main(){int a=22;if(a==1){printf('哈哈哈');} else if(a==2){printf('嘿嘿嘿');} else if(a==3){printf('呀呀呀');}else{printf('我都沒猜對,其實a的值%d',a);} }
結(jié)果如下:
2.2 if語句判斷多個條件
以上學(xué)習(xí)的if只能判斷一個條件,若我需要判斷多個條件該怎么辦?這時可以使用邏輯運算符。例如當(dāng)a等于1或2時表示天氣下雨和刮風(fēng),我則不去跑步,當(dāng)a等于3或者4時則表示需要上學(xué)和補課,當(dāng)a等于其它值是則可以去跑步。
首先我們使用簡單的if語句了解一下邏輯運算符。代碼如下:
#include<stdio.h>void main(){int a=1;if(a==1||a==2){printf('天氣正在下雨或刮風(fēng)');} }
以上代碼著重關(guān)注if語句的條件 a==1||a==2,其中使用的“||”為邏輯運算符“或”運算?;蜻\算表示兩個表達式(表達式指是由數(shù)字、算符、數(shù)字分組符號等可以求得一個值的組合)的值有一個正確,那么或運算符(||)左右兩邊整體的值則為正確。當(dāng)前或運算符左邊為a1,右邊為a2,只要滿足其中一個則會執(zhí)行 printf('天氣正在下雨或刮風(fēng)');。
運行結(jié)果如下:
修改一下代碼完成以上所說的需求“a等于1或2時表示天氣下雨和刮風(fēng),我則不去跑步,當(dāng)a等于3或者4時則表示需要上學(xué)和補課,當(dāng)a等于其它值是則可以去跑步。”,代碼如下:
#include<stdio.h>void main(){int a=4;if(a==1||a==2){printf('天氣正在下雨或刮風(fēng)');} else if(a==3||a==4){printf('我要去上學(xué)或者補課');}else{printf('我要去跑步');}}
結(jié)果如下:
2.3 邏輯運算符與&&
以上我們介紹了邏輯運算符或(||),使用或運算符只需要左右兩邊有一個表達式正確則左右兩邊整體的值為正確。在C語言中正確我們可以使用一個標識表示。這個標識為TRUE。
這一小節(jié)我們將學(xué)習(xí)需要表達式兩邊都正確整體的值才為正確的運算符“與”,與運算使用運算符&&。我們修改上一小節(jié)的程序,修改后代碼如下:
#include<stdio.h>void main(){int a=4;if(a==1&&a<5){printf('天氣正在下雨或刮風(fēng)');} else if(a==3||a==4){printf('我要去上學(xué)或者補課');}else{printf('我要去跑步');}}
以上代碼if后的條件為a==1&&a<5,中間的運算符更改為了&&,&&表示左右兩邊表達式均正確,當(dāng)前運算才為正確。很明顯a等于,不滿足第一個條件,滿足 a==3||a==4條件,則會執(zhí)行代碼printf('我要去上學(xué)或者補課');。運行結(jié)果如下:
我們修改a的值為1,則會執(zhí)行代碼printf('天氣正在下雨或刮風(fēng)');。(雖然a等于1的時候肯定小于5,這里只是作為演示)代碼如下:
#include<stdio.h>void main(){int a=1;if(a==1&&a<5){printf('天氣正在下雨或刮風(fēng)');} else if(a==3||a==4){printf('我要去上學(xué)或者補課');}else{printf('我要去跑步');}}
結(jié)果如下:
switch語句與if作用相同,均是用與做流程控制,也和if語句一樣需要使用條件進行控制。
學(xué)習(xí)了if語句后switch的學(xué)習(xí)相對比較簡單,先列出一個格式說明:
switch(變量){ case 值: //代碼內(nèi)容 break;//break是跳出作用,不像if只執(zhí)行一處,如果不加break會執(zhí)行下一句 case 值: //代碼內(nèi)容 break;//break是跳出作用,不像if只執(zhí)行一處,如果不加break會執(zhí)行下一句 case 值: //代碼內(nèi)容 break;//break是跳出作用,不像if只執(zhí)行一處,如果不加break會執(zhí)行下一句 default: //代碼內(nèi)容 }
switch是關(guān)鍵字,后接一個圓括號,圓括號內(nèi)傳入一個變量;在switch圓括號后使用一對花括號,花括號內(nèi)為switch語句的內(nèi)容。使用case關(guān)鍵字后接一個值,假設(shè)switch傳入的變量值為1,則跳轉(zhuǎn)到case 1:后執(zhí)行冒號后的代碼,在代碼的最后一行使用break關(guān)鍵字跳出。(break的作用為跳出)如不加break則會執(zhí)行按順序往下的case內(nèi)容。
先看一示例代碼:
#include<stdio.h>void main() { int a=1; switch(a){ case 1: printf('選擇的是夫妻肺片'); break; case 2: printf('選擇的是腸粉'); break; case 3: printf('選擇的是口水蝦'); break; case 4: printf('選擇的是瀨尿蝦'); break; case 5: printf('選擇的是炸蝗蟲'); break; default: printf('沒有這個菜單'); }}
以上代碼中a的值等于1,switch傳入一個a作為條件,a為1則跳轉(zhuǎn)到case 1處執(zhí)行冒號后的代碼printf('選擇的是夫妻肺片');。
運行結(jié)果如下:
我們嘗試在case 1與case 2語句塊中刪除最后一條語句 break; 看看是否會繼續(xù)執(zhí)行下一個case 2:的內(nèi)容。代碼如下:
#include<stdio.h>void main() { int a=1; switch(a){ case 1: printf('選擇的是夫妻肺片'); case 2: printf('選擇的是腸粉'); case 3: printf('選擇的是口水蝦'); break; case 4: printf('選擇的是瀨尿蝦'); break; case 5: printf('選擇的是炸蝗蟲'); break; default: printf('沒有這個菜單'); }}
結(jié)果如下:
從結(jié)果得知程序并沒有跳出。由于并沒有換行,我們使用\n符號可以進行換行,使運行結(jié)果更加清晰。修改代碼如下:
#include<stdio.h>void main() { int a=1; switch(a){ case 1: printf('選擇的是夫妻肺片\n'); case 2: printf('選擇的是腸粉\n'); case 3: printf('選擇的是口水蝦\n'); break; case 4: printf('選擇的是瀨尿蝦\n'); break; case 5: printf('選擇的是炸蝗蟲\n'); break; default: printf('沒有這個菜單\n'); }}
以上程序在printf中添加了\n,\n的作用是換行,輸出顯示時并不會輸出\n。
運行結(jié)果如下:
通過以上描述與講解,我們了解了以下幾點內(nèi)容: