C語言-分支與迴圈
阿新 • • 發佈:2022-04-05
C語言之分支與迴圈
前言
C語言是一門結構化的程式設計語言,主要分為三種結構:
1.順序結構
2.選擇結構
3.迴圈結構
下面我們主要探討的是選擇結構和迴圈結構。
分支語句和迴圈語句
分支語句
- if
- switch
迴圈語句
- while
- for
- do while
goto語句
問:那什麼是語句?
C語言中由一個分號(;)隔開的就是一個語句。
一、分支語句(選擇結構)
舉個栗子:當你站在學習的分岔口時,你可以選擇是否學習,然後當有一天你遇到了改變你命運的機會,那麼這個時候:
好好學習+機遇=人生巔峰;不好好學習+機遇=回家放羊;
這就是選擇,我們的每一個選擇都決定著我們的人生(這個時候請富二代自行划走)。
1.if語句
if語句的三種情況:
if(表示式) //如果表示式為真,則執行語句
語句;
if(表示式)
語句1;
else(表示式)
語句2;
if(表示式)
語句1;
else if(表示式)
語句2;
else
語句3;
#include <stdio.h> #include <stdlib.h> int main() { int age=10; if(age>0&&age<18) printf("少年\n"); else if(age>=18&&age<30) printf("青年\n"); else if(age>=30&&age<50) printf("壯年\n"); else if(age>=50&&age<150) printf("老年\n"); else { printf("輸入錯誤\n"); printf("請更改\n"); } return 0; }
1.解釋(如果表示式為真,則執行語句):
在C語言中如何表示真假,0表示假,非0表示真
2.if語句怎樣使用多條語句:
使用程式碼塊{ },將語句放置在花括號中
錯誤示例:
int main()
{
int x=0;
int s=1;
if(x==1)//==判斷相等 =賦值
if(s==1)
printf("文字\n");
else
printf("數字\n");
return 0;
}
注意: 這種情況程式不執行! 第一個表示式(x=1)不為真,並且沒有else與之匹配。 else與離它最近且未匹配的if進行配對。
2.switch語句
switch語句也是分支語句的一種,它常常用於多分支的情況。
就是因為一直使用else if太麻煩了,所以有了switch語句。
switch(整型表示式)
{
語句項;
}
問:那什麼是語句項?
case 整形常量表達式:
語句;
#include <stdio.h>
#include <stdlib.h>
int main()
{
int win = 0;
scanf("%d",&win);
switch(win)
{
case 1:
printf("IG");
break;
case 2:
printf("FPX");
break;
case 3:
printf("EDG");
break;
case 4:
printf("RNG");
break;
case 5:
printf("TES");
break;
default:
printf("輸入錯誤");
break;
}
return 0;
}
注意:
1.想輸出單個分支內容
在switch語句中,我們沒辦法直接實現分支,所以需要搭配 break 使用,
break的實際效果就是把語句結束。
2.default語句:
如果輸入的東西與所有的case標籤都不一樣,可以加入一條default語句,
程式就會執行default語句的內容,每個switch語句只能有一個default子句,
但是它可以出現在語句列表的任何位置,語句流會向貫穿case標籤一樣貫穿default子句。
二、迴圈語句
再舉個栗子:當你再次站在學習的分岔口時,這個時候你不一樣了,你有身份,你是世界第二富的兒子,你還是可以選擇是否學習:
好好學習+機遇=人生巔峰;不好好學習+自己製造機遇=人生巔峰;不好好學習+金錢的力量=人生巔峰;
這可能是現實,雖然不喜歡這樣,但是沒有傘的孩子必須奔跑。
1.while迴圈
當滿足條件時,if語句的執行只會執行一次,但實際上,同一件事,我們需要完成很多次,這個時候就需要用到while語句來幫助我們實現迴圈。
while(表示式)
迴圈語句;
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s = 1;
while(s<=10)
{
/*
if(s==9)
continue;
如果加上,會進入一個死迴圈,因為s++寫在後面,
當s等於9時,跳過了後面的程式碼,包括s++,
所以s數值不變,返回迴圈是依然是9。
*/
printf("%d\n",s );
s++;
}
return 0;
}
補充:
continue
continue用於終止迴圈中本次迴圈continue後的程式碼,直接跳到下一次迴圈入口。
break
break用於停止後面的所有迴圈,直接終止。
2.for迴圈
for(表示式1;表示式2;表示式3)
迴圈語句;
1.表示式1為初始化部分,用來初始化迴圈變數
2.表示式2為條件判斷部分,用於判斷迴圈什麼時候終止
3.表示式3為調整部分,用於迴圈條件的調整
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s = 0;
for(s=1;s<=10;s++)
printf("%d\n",s);
return 0;
}
對比for迴圈與while迴圈
1.在while迴圈中依然存在迴圈的三個必要條件,但由於風格問題使它們離的比較遠,所以修改不夠集中和方便,與之相比,for迴圈風格更好,所以for迴圈的使用頻率較高。
2.for迴圈中也可以使用break和continue,意義和while迴圈中的一樣,只不過因為for迴圈的條件判斷部分在前邊,所以當使用continue是不會陷入死迴圈。
建議:
不可以在for迴圈體內修改迴圈變數,防止for迴圈失去控制
for迴圈的迴圈控制變數的取值採用“前閉後開區間”寫法
3.do while迴圈
do
迴圈語句;
while(表示式);
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s = 1;
do
{
printf("%d\n",s);
s++;
}
while(s<=10);
return 0;
}
do語句特點:
迴圈至少執行一次,使用的場景有限,所以不是經常使用
結尾
分支與迴圈的內容就到此結束了,但是學習是不可以停止的。