前言:想必大家都聽(tīng)說(shuō)過(guò)三大結(jié)構(gòu),它們是十分神奇的,因?yàn)樗麄兛梢杂眠壿嬅枋鲈谶@個(gè)世界中所發(fā)生任何事情,今天就來(lái)了解一下實(shí)現(xiàn)這三大結(jié)構(gòu)所用的其中一種語(yǔ)句——控制語(yǔ)句。
內(nèi)容簡(jiǎn)要:
執(zhí)行邏輯:
下面用代碼實(shí)現(xiàn)一下:
int main()
{int true = 1;
int false = 0;
if(true)//非0為真,這里的true換成其他非0的數(shù)字也可以。
{ printf("真命題\n");
}
if(false)//0為假不執(zhí)行
{ false = 1;
}
printf("%d",false);//驗(yàn)證:如果執(zhí)行則為1,反之為0。
return 0;
}
2.if else執(zhí)行邏輯:
注意:else與最近的if匹配。
實(shí)現(xiàn)代碼:
#includeint main()
{ int a = 2;
if(a>1)//如果a大于1只執(zhí)行if,否則執(zhí)行else語(yǔ)句。
{printf("真命題");
}
else
{printf("假命題");
}
return 0;
}
3.if else if語(yǔ)句執(zhí)行邏輯:
說(shuō)明:當(dāng)語(yǔ)句在所有情況都成立時(shí),只執(zhí)行第一個(gè)條件,當(dāng)都不成立時(shí),跳過(guò)所有語(yǔ)句。
代碼實(shí)現(xiàn):
int main()
{int a = 3;
if(a>3)
{printf("a大于3\n");
}
else if(a>4)
{printf("a大于4\n");
}//很顯然這里都不執(zhí)行,所以什么也不打印。
if(a>1)
{printf("a大于1");
}
else if(a>2)
{printf("a大于2");
}//這里情況都成立,只執(zhí)行第一句。
return 0;
}
4.if __else if__else語(yǔ)句執(zhí)行邏輯:
代碼實(shí)現(xiàn):
#includeint main()
{ int a = 5;
if(a<4)
{printf("a小于4\n");
}
else if(a<3)
{printf("a小于3\n");
}
else
{printf("a大于4");
}//這里第一丶二條語(yǔ)句都不成立,執(zhí)行第三條語(yǔ)句。
return 0;
}
5.書寫建議第一:使用if語(yǔ)句時(shí)要加大括號(hào),提高代碼的可讀性。不良代碼舉例:
#includeint main()
{int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
//這里什么也不打印,如果沒(méi)想通看一下上面 if else 的注意事項(xiàng)。
return 0;
}
修改后的代碼
#includeint main()
{int a = 0;
int b = 2;
if(a == 1)
{ if(b == 2)
{ printf("hehe\n");
}
else
{ printf("haha\n");
}
}
//這樣是不是好看,好讀多了呢?
return 0;
}
第二:再進(jìn)行變量與常量判斷是否相等時(shí),應(yīng)將常量放在前面,變量放在后面。代碼舉例:
#includeint main()
{//判斷a是否等于1
int a = 1;
if(a==1)
{printf("a的值為1\n");
}
//易錯(cuò)
if(a=1)//注意:這里是將1的值賦給a而不是等于!并且編譯器是不會(huì)報(bào)錯(cuò)的!
{ printf("a的值為1\n");
}
if(1==a)
{ printf("a的值為1\n");
}
if(1=a)//注意:這里編譯器會(huì)提示出現(xiàn)表達(dá)式左邊必須是常量的bug,可以提醒你。
{ printf("a的值為1\n");
}
return 0;
}
第三:等號(hào)與大于等于號(hào)分開(kāi)寫代碼舉例:
1.等號(hào):
int main()
{int a = 2;
int b = 2;
int c = 2;
//錯(cuò)誤代碼:
if(a==b==c)
{printf("abc相等\n");
}
else
{printf("abc不相等\n");
}
//正確代碼
if(a==b&&b==c)
{printf("abc相等\n");
}
else
{printf("abc不相等\n");
}
return 0;
}
這里a == b == c代碼的執(zhí)行邏輯是先判斷b==c如果正確,此表達(dá)式結(jié)果為1,反之為0,再將a == 表達(dá)式的結(jié)果(0/1)判斷,如故果成立執(zhí)行語(yǔ)句,如果不成立跳過(guò)語(yǔ)句。
2.大于,大于等于,小于,小于等于
代碼舉例:
#includeint main()
{int a = 0;
//錯(cuò)誤代碼
if(1printf("a大于1小于2\n")
}//這里會(huì)打印,思考一下代碼的執(zhí)行邏輯。
//正確代碼
if(a>1&&a<2)
{printf("a大于1小于2\n")
}
return 0;
}
這里1
2.switch語(yǔ)句內(nèi)容:Switch主要用于多情況的判斷,可以借助if ,else if,else語(yǔ)句進(jìn)行理解
執(zhí)行邏輯:這是沒(méi)有break的switch,就像沒(méi)有判斷的if語(yǔ)句一樣只執(zhí)行不判斷,不過(guò)唯一的區(qū)別是輸入情況是幾,就從那條語(yǔ)句開(kāi)始進(jìn)行執(zhí)行。代碼實(shí)現(xiàn):
#includeint main()
{int n = 0;
scanf("%d",&n);//輸入1
switch(n)
{case 1:
printf("hehe\n");
case 2:
printf("haha\n");
default:
printf("heihei\n");
}
//試著思考一下代碼結(jié)果。
printf("\n");
switch(n)
{case 2:
printf("haha\n");
case 1:
printf("hehe\n");
default:
printf("heihei\n");
}//這跟上一段代碼的打印結(jié)果相同嗎?
printf("\n");
switch(n)
{default:
printf("heihei\n");
case 2:
printf("haha\n");
case 1:
printf("hehe\n");
}//這跟上一段代碼的打印結(jié)果相同嗎?
printf("\n");
switch(n)
{case 1:
printf("hehe\n");
default:
printf("heihei\n");
case 2:
printf("haha\n");
}//這一段的代碼的結(jié)果是?
return 0;
}
答案:
解析:
這幾段的代碼都是從輸入的值的情況 處開(kāi)始從上往下運(yùn)行,直到最后一條語(yǔ)句。如果沒(méi)有則執(zhí)行default。
注意:
1.switch括號(hào)里面只能整形的變量或常量,case 后只能跟整形常量!
2.default:是除case情況外的其他情況進(jìn)行執(zhí)行的,一個(gè)switch只能有一條default。
如果輸入幾就只執(zhí)行那一條語(yǔ)句的情況呢?
答:
這里要引入一個(gè)關(guān)鍵字:break——有終止,打破的意思,可以幫我們終止后面語(yǔ)句的執(zhí)行。
代碼實(shí)現(xiàn):
#includeint main()
{int n = 0;
scanf("%d",&n);//輸入1
switch(n)
{ case 1:
printf("hehe\n");
break;
case 2:
printf("haha\n");
break;
default:
printf("heihei\n");//最后一句是switch語(yǔ)句的終點(diǎn),故不需再加breaK,小編還是建議加上。
break;
}
return 0;
}
思考:如果要知道一年的一個(gè)月有幾天該如何實(shí)現(xiàn)呢(用switch語(yǔ)句)?解析:
#includeint main()
{//思路:1.3.5.7.8.10.12月,31天永不差
// 2月:閏年29天,平年28天
// 4.6.9.11月,30天
//閏年判斷規(guī)則:1:能被4整除并且不能被100整除
// 2: 能被四百整除
//注意這兩個(gè)條件只要滿足一個(gè)即可
int month = 0;
int year = 0;
scanf("%d %d",&year,&month);
switch(n)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31天\n");//想一下switch的運(yùn)行邏輯
break:
case 4:
case 6:
case 9:
case 11:
printf("30天\n");
case 2:
{if(((year%4==0)&&(year%100!=0))||(year%400==0))//因?yàn)檫@里并不知道優(yōu)先級(jí)故要加括號(hào),具體可參考if( ( ()&&() )||() )這個(gè)框架。
{printf("29天\n");
}
else
{printf("28天\n");
}
break;
}
default://其他情況如13
printf("查無(wú)此月\n");
}
return 0;
}
注意:switch是可以嵌套使用的!
例題:
int main()
{int n = 1;
int m = 2;
switch (n)
{case 1:
{ m++;
}
case 2:
{ n++;
}
case 3:
{switch (n)//注意這里n為2。
{case 1:
{ n++;
}
case 2:
{ m++;
n++;
break;
}
}
}
case 4:
{ m++;
break;
}
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
答案:
不知你做對(duì)了嗎?
希望大家,學(xué)有所成,思有所得,得有所就!如果有誤,請(qǐng)委婉一點(diǎn)指出,如果覺(jué)得文章不錯(cuò),請(qǐng)留下您的點(diǎn)贊與評(píng)論,小編會(huì)繼續(xù)加油!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站標(biāo)題:入門C語(yǔ)言第一話:分支與循環(huán)語(yǔ)句(上)——秒懂文章,分支如此簡(jiǎn)單!-創(chuàng)新互聯(lián)
URL鏈接:http://jinyejixie.com/article14/dijige.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、用戶體驗(yàn)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容