首頁 > 軟體

一文詳解C++的程式流程控制

2022-08-01 18:03:55

一、前言

C++支援最基本的三種程式執行結構:

  • 順序結構
  • 選擇結構
  • 迴圈結構

順序結構:程式按順序執行,不發生跳轉

選擇結構:依據條件是否滿足,有選擇的執行相應功能

迴圈結構:依據條件是否滿足,迴圈多次執行某段程式碼 二、選擇結構 1、if語句

作用: 執行滿足條件的語句

if語句的三種形式:

  • 單行格式if語句
  • 多行格式if語句
  • 多條件的if語句

單行格式if語句:if(條件){ 條件滿足執行的語句 }

程式碼範例:

int main() {
	//選擇結構-單行if語句
	//輸入一個分數,如果分數大於600分,視為考上一本大學,並在螢幕上列印
	int score = 0;
	cout << "請輸入一個分數:" << endl;
	cin >> score;
	cout << "您輸入的分數為: " << score << endl;
	//if語句
	//注意事項,在if判斷語句後面,不要加分號
	if (score > 600)
	{
		cout << "我考上了一本大學!!!" << endl;
	}
	return 0;
}

注意:if條件表示式後不要加分號

多行格式if語句:if(條件){ 條件滿足執行的語句 }else{ 條件不滿足執行的語句 };

程式碼範例:

int main() {
	//選擇結構-單行if語句
	//輸入一個分數,如果分數大於600分,視為考上一本大學,並在螢幕上列印
	int score = 0;
	cout << "請輸入一個分數:" << endl;
	cin >> score;
	cout << "您輸入的分數為: " << score << endl;
	//if語句
	//注意事項,在if判斷語句後面,不要加分號
	if (score > 600)
	{
		cout << "我考上了一本大學!!!" << endl;
	}
	return 0;
}

多條件的if語句:if(條件1){ 條件1滿足執行的語句 }else if(條件2){條件2滿足執行的語句}... else{ 都不滿足執行的語句}

程式碼範例:

int main() {
	int score = 0;
	cout << "請輸入考試分數:" << endl;
	cin >> score;
	if (score > 600)
	{
		cout << "我考上了一本大學" << endl;
	}
	else
	{
		cout << "我未考上一本大學" << endl;
	}
	return 0;
}

巢狀if語句:在if語句中,可以巢狀使用if語句,達到更精確的條件判斷

2、三目運運算元

作用: 通過三目運運算元實現簡單的判斷

語法:表示式1 ? 表示式2 :表示式3

解釋:

  • 如果表示式1的值為真,執行表示式2,並返回表示式2的結果;
  • 如果表示式1的值為假,執行表示式3,並返回表示式3的結果。

程式碼範例:

int main() {
	int a = 10;
	int b = 20;
	int c = 0;
	c = a > b ? a : b;
	cout << "c = " << c << endl;
	//C++中三目運運算元返回的是變數,可以繼續賦值
	(a > b ? a : b) = 100;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
	return 0;
}

總結:和if語句比較,三目運運算元優點是短小整潔,缺點是如果用巢狀,結構不清晰

3、switch語句

作用: 執行多條件分支語句

語法:

switch(表示式)
{
	case 結果1:執行語句;break;
	case 結果2:執行語句;break;
	...
	default:執行語句;break;

}

程式碼範例:

int main() {
	//請給電影評分 
	//10 ~ 9   經典   
	// 8 ~ 7   非常好
	// 6 ~ 5   一般
	// 5分以下 爛片
	int score = 0;
	cout << "請給電影打分" << endl;
	cin >> score;
	switch (score)
	{
	case 10:
	case 9:
		cout << "經典" << endl;
		break;
	case 8:
		cout << "非常好" << endl;
		break;
	case 7:
	case 6:
		cout << "一般" << endl;
		break;
	default:
		cout << "爛片" << endl;
		break;
	}
	return 0;
}

注意1:switch語句中表示式型別只能是整型或者字元型
注意2:case裡如果沒有break,那麼程式會一直向下執行
總結:與if語句比,對於多條件判斷時,switch的結構清晰,執行效率高,缺點是switch不可以判斷區間

三、迴圈結構

1、while迴圈語句

作用: 滿足迴圈條件,執行迴圈語句

語法: while(迴圈條件){ 迴圈語句 }

解釋:只要迴圈條件的結果為真,就執行迴圈語句

範例:

int main() {
	int num = 0;
	while (num < 10)
	{
		cout << "num = " << num << endl;
		num++;
	}
	return 0;
}

注意:在執行迴圈語句時候,程式必須提供跳出迴圈的出口,否則出現死迴圈

2、do…while迴圈語句

作用: 滿足迴圈條件,執行迴圈語句

語法: do{ 迴圈語句 } while(迴圈條件);

注意: 與while的區別在於do…while會先執行一次迴圈語句,再判斷迴圈條件

程式碼範例:

int main() {
	int num = 0;
	do
	{
		cout << num << endl;
		num++;

	} while (num < 10);
	return 0;
}

總結:與while迴圈區別在於,do…while先執行一次迴圈語句,再判斷迴圈條件

3、for迴圈語句

作用: 滿足迴圈條件,執行迴圈語句

語法: for(起始表示式;條件表示式;末尾迴圈體) { 迴圈語句; }

程式碼範例:

int main() {
	for (int i = 0; i < 10; i++)
	{
		cout << i << endl;
	}
	return 0;
}

詳解:

注意:for迴圈中的表示式,要用分號進行分隔

總結:while , do…while, for都是開發中常用的迴圈語句,for迴圈結構比較清晰,比較常用

四、跳轉語句

1、break語句

作用: 用於跳出選擇結構或者回圈結構

break使用的時機:

  • 出現在switch條件語句中,作用是終止case並跳出switch
  • 出現在迴圈語句中,作用是跳出當前的迴圈語句
  • 出現在巢狀迴圈中,跳出最近的內層迴圈語句

程式碼範例:

int main() {
	//1、在switch 語句中使用break
	cout << "請選擇您挑戰副本的難度:" << endl;
	cout << "1、普通" << endl;
	cout << "2、中等" << endl;
	cout << "3、困難" << endl;
	int num = 0;
	cin >> num;
	switch (num)
	{
	case 1:
		cout << "您選擇的是普通難度" << endl;
		break;
	case 2:
		cout << "您選擇的是中等難度" << endl;
		break;
	case 3:
		cout << "您選擇的是困難難度" << endl;
		break;
	}
	return 0;
}

2、continue語句

作用: 在迴圈語句中,跳過本次迴圈中餘下尚未執行的語句,繼續執行下一次迴圈

程式碼範例:

int main() {
	for (int i = 0; i < 100; i++)
	{
		if (i % 2 == 0)
		{
			continue;
		}
		cout << i << endl;
	}
	return 0;
}

注意:continue並沒有使整個迴圈終止,而break會跳出迴圈

3、goto語句

作用: 可以無條件跳轉語句

語法: goto 標記;

解釋: 如果標記的名稱存在,執行到goto語句時,會跳轉到標記的位置

程式碼範例:

int main() {
	cout << "1" << endl;
	goto FLAG;
	cout << "2" << endl;
	cout << "3" << endl;
	cout << "4" << endl;
	FLAG:
	cout << "5" << endl;
	return 0;
}

注意:在程式中不建議使用goto語句,以免造成程式流程混亂

到此這篇關於一文詳解C++的程式流程控制的文章就介紹到這了,更多相關C++流程控制內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


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