首頁 > 軟體

C語言超詳細講解迴圈與分支語句基礎

2022-04-12 19:00:24

寫在開始

在內容開始之前給大家介紹一下在計算機中如何表示真假

0表示假,非0表示真。

1. 分支語句

分支語句也叫做條件選擇語句,主要分為if語句和switch語句。

1.1 if語句

if()…{} else if()…{} else {}

程式碼解釋:

#include<stdio.h>  
//這裡是引入「printf」函數所在的標頭檔案,大家在使用函數時要記得把函數的標頭檔案加上哦
int main()
{
   int a = 1, b = 2, c = 3;
   if (a > c)  printf("a比c大");
   else if (a > b) printf("a比b大");
   else (printf("a比b和c都小"));
}

分析:

在if(a>c)中a>c為假,故會跳過printf(“a比c大”);,接下來會執行else if,而a>b也為假,故會向下執行else的語句"a比b和c都小",最終如上圖所示。

注:如果在第一個if裡面條件成立了那之後的else if和else語句都將不會被執行。

  • if()…{}…else {}

理解完第一種方法後面這兩種方法也就不難理解了,在這個語句中少了if else語句,因此對比上一種方法這種語句在執行時跳過了else if的判斷與執行階段。

或者我們可以這樣理解:在這裡其實else if也存在,比如以這種方式:else if(0) {expression;}

  • if() …{}

關於這個語句想必不用我多說了吧,相信聰明的小夥伴們自己便能明白了。

總結:

在if()的括號內填入條件,如果條件成立時,將會執行後面大括號(程式碼塊)裡的的表示式,而若條件不成立時,系統將會直接跳過表示式去執行else if 的判斷,條件成立則執行else if 後面的程式碼塊,反之則跳過,最後如果都不符合條件的話則會直接執行else後的語句。

1.2 switch

switch語句一般是和迴圈語句一起搭配使用的,現在先了解一下switch語句是怎麼使用的。

程式碼格式:

switch(a)//a是一個整形變數
{
   case 1:expression1;//不一定要寫case 1,可以是任意a所能取值的數
   break;
   case 2:expression2;
   break;
   ....
   default:expression;
}

在switch()裡放入一個整形變數a,程式會根據a的值跳轉到對應的case 語句並執行,而執行到break時程式便會跳出switch語句,如果沒有對應的case語句則會執行default語句.下面請看範例來了解:

//將數位轉換成其在一週內的位置
int main()
{
	int day = 0;
	scanf("%d",&day);//通過鍵盤向變數day輸入一個整數
	switch (day){
	case 1:printf("週一"); 
		break;
	case 2:printf("週二"); 
		break;
	case 3:printf("週三");
		break;
		//中間的我省略了,這裡程式碼演示主要是為了讓大家瞭解功能,長篇大論也不太好
	case 7:printf("週日");
		break;
	default:printf("請輸入正確的數位");
	}
	return 0;
}

前面說了break的作用是跳出switch語句,現在給大家看看如果沒有break的效果吧:

既然沒有跳出去那就繼續執行下一個語句唄,沒有問題。break語句其實並不是每個case語句後面都要加上,有些時候只在必要的地方加上就可以達到我們想要的效果了.

2. 迴圈語句

迴圈語句主要分為三種:for語句,while語句和do while語句,這三種語句都是可以做到相互轉換的,一般來說for語句會方便點,不過最終用哪種還是看具體問題和個人的喜好吧。

2.1 while()語句

while(condition)
{
    expression;
}

解釋:

condition 為判斷條件。

expression 為條件為真時執行的語句。

執行時:

while()語句首先是判斷括號裡面表示式的真值,如果條件為真(非0),則會執行後面的程式碼塊,執行完之後會再一次的進入條件判斷階段,如果條件還為真,則會繼續執行直至條件為假(0)時跳出迴圈。

這裡給大家出個小題目吧,隨便複習下剛剛講的if語句(不會也不要緊的,慢慢來,這裡只是給大家加深點印象)

列印10以內的奇數。

有沒有小夥伴是這樣寫的呢:printf("%d%d%d%d%d", 1, 3, 5, 7, 9);

哈哈結果沒問題,不過咱們可是要當程式設計師的人吶

int main()
{
	int i = 0;//在宣告一個變數時記得給它賦值,這一部叫做變數的初始化
	while (i <= 10) {
		if (i % 2 == 1)  //符號「==」是判斷是否相等,可以理解為數學中的等於號
		//"%"為取模,比如10%3=1,是取餘數
			printf("%d", i);
		i++; //  i++的意思是先使用i自己的值,然後使自己的值加1,這裡可以看成是  i = i + 1;
	}
	return 0;
}

該注意的點我已近在程式碼裡註釋了,如果還有不懂的可以在評論區提問,當然如果有問題也還請大佬們指出,YU同學先感謝大家了。

2.2 do while()語句

do while()語句與while語句區別不大,正如它的名字一樣,它在執行是會提前執行一遍程式碼塊裡面的內容,然後再進行判斷while()裡面的真值,後面的就與while()語句是一樣的,接下來給大家演示一下do while ()語句的格式:

    do {
        expression;
    }while (condition);

2.3 for 語句

程式碼格式:

for(expression1;condition;espression2)
{
    expression;
}

解釋:

expression1 是給迴圈變數賦予初始值。(這時在開始迴圈的時候進行的,後面迴圈的時候不會再執行這個程式碼)

condition 是每次迴圈時判斷的條件,若條件真值為真這繼續執行程式碼塊裡面的語句,為假則會跳出for迴圈。

expression2 一般是對賦值變數的操作,讓程式能達到自己想要的效果。

執行時:

程式會先進行對迴圈變數的賦值,而後進行條件判斷,為真則執行後面的程式碼塊,為假則退出迴圈,再執行完程式碼塊後程式會通過condition2進行對迴圈變數的操作,然後進入下一次迴圈的判斷階段,以此類推。

for語句中表示式的省略

注:語句可以省,但分號不能省的,就算全省了也要寫成for( ; ; )這樣

  • 省略expression1

省略這一步則會跳過for迴圈時給迴圈變數賦值的部分,如果省略需要再for迴圈之前設定好迴圈變數的初始值。

  • 省略condition

condition為迴圈條件,當省略 它時系統會預設條件真值為1,即條件永遠為真,這樣程式會陷入死迴圈而崩潰,是不能省略的。

  • 省略expression2

可省略,省略完後系統將跳過執行程式碼塊後對迴圈變數的操作,因次就要把對迴圈變數的操作放到程式碼塊中了。

break在迴圈語句中的作用

程式執行時遇到break語句時不論當前條件的真值是否為假都會會直接跳出迴圈,下面給大家看個例子:

int main()
{
	int i = 1;
	for (i = 0; i<10; i++)
	{
		if (i == 6)
			break;
		printf("%d",i);
	}
	printf("n%d", i);//前面列印一個空行
}

程式的結果是

012345 6

過程解釋:在迴圈變數i=5時,if(i==6)條件不通過,並沒有執行break語句,然後繼續在螢幕列印5,之後通過i++使得i變成6,從而使得if(i==6)為真,程式執行時執行了break後跳出了迴圈,沒有列印6和進行之後的迴圈,而後面的6時在迴圈外列印的,此時i=6,故列印出了一個六在下一行。

continue 在迴圈語句中的應用

continue 是使程式跳出本次迴圈去執行下一次迴圈

注:是跳出本次迴圈的執行程式碼塊部分,前面講過for迴圈在執行完程式碼塊後還會有一步對迴圈變數的操作,這一部分是不會被跳過的。

下面看看效果:

對於while和do while

int main()
{
	int i = 0;
	while(i<10)
	{
		if (i == 6)
			comtinue;
		printf("%d",i);
		i++;
	}
	printf("n%d", i);//前面列印一個空行
}

程式出現了在一直閃遊標,出現死迴圈。

分析:當i=6時執行了continue跳出了本次迴圈進入下一次迴圈,可下一次迴圈還是有i=6(i++語句在continue之後,沒有沒執行),一直重複從而出現死迴圈。

對於for

int main()
{
	int i = 0;
	for (i = 0; i<10; i++)
	{
		if (i == 6)
			continue;
		printf("%d",i);
	}
	printf("n%d", i);
}

這次列印少為12345789 10,少了一個6,但程式並沒有出現死迴圈正是上面說說的,for迴圈中對迴圈變數處理的一部分不會被跳過。

總結:

今天給大家簡單介紹了分支語句 if語句和switch語句,迴圈語句for語句,while語句,dowhile語句的使用方法和簡單的執行流程以及continue 和break 在迴圈語句中的應用和細小差別。

到此這篇關於C語言超詳細講解迴圈與分支語句基礎的文章就介紹到這了,更多相關C語言 迴圈與分支內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com