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