C++入門到理解階段二基礎篇(5)——C++流程結構

1.順序結構

程序從上到下執行html

2.選擇結構(判斷結構)

判斷結構要求程序員指定一個或多個要評估或測試的條件,以及條件爲真時要執行的語句(必需的)和條件爲假時要執行的語句(可選的)。java

C++ 編程語言提供瞭如下類型的判斷語句ios

語句 描述
if語句 一個 if 語句 由一個布爾表達式後跟一個或多個語句組成。
if-else語句 一個 if 語句 後可跟一個可選的 else 語句,else 語句在布爾表達式爲假時執行。
嵌套if語句 您能夠在一個 ifelse if 語句內使用另外一個 ifelse if 語句。
switch語句 一個 switch 語句容許測試一個變量等於多個值時的狀況。
嵌套switch語句 您能夠在一個 switch 語句內使用另外一個 switch 語句。

 if語句

C++ 中 if 語句的語法:程序員

if(boolean_expression)
{
   // 若是布爾表達式爲真將執行的語句
}

若是布爾表達式爲 true,則 if 語句內的代碼塊將被執行。若是布爾表達式爲 false,則 if 語句結束後的第一組代碼(閉括號後)將被執行。express

C 語言把任何非零非空的值假定爲 true,把null 假定爲 false編程

int main() {
	int a=30;
	if (a<20)
	{
		cout << a;
	}
	cout << 20;
	return 0;
}

if-else語句

一個 if 語句 後可跟一個可選的 else 語句,else 語句在布爾表達式爲假時執行。數組

C++ 中 if...else 語句的語法:app

if(boolean_expression)
{
   // 若是布爾表達式爲真將執行的語句
}
else
{
   // 若是布爾表達式爲假將執行的語句
}

若是布爾表達式爲 true,則執行 if 塊內的代碼。若是布爾表達式爲 false,則執行 else 塊內的代碼。編程語言

#include <iostream>
using namespace std;
 
int main ()
{
   // 局部變量聲明
   int a = 100;
 
   // 檢查布爾條件
   if( a < 20 )
   {
       // 若是條件爲真,則輸出下面的語句
       cout << "a 小於 20" << endl;
   }
   else
   {
       // 若是條件爲假,則輸出下面的語句
       cout << "a 大於 20" << endl;
   }
   cout << "a 的值是 " << a << endl;
 
   return 0;
}

嵌套if語句

在 C++ 中,嵌套 if-else 語句是合法的,這意味着您能夠在一個 ifelse if 語句內使用另外一個 ifelse if 語句。函數

C++ 中 嵌套 if 語句的語法:

if( boolean_expression 1)
{
   // 當布爾表達式 1 爲真時執行
   if(boolean_expression 2)
   {
      // 當布爾表達式 2 爲真時執行
   }
}
您能夠嵌套 else if...else,方式與嵌套 if 語句類似。
#include <iostream>
using namespace std;
 
int main ()
{
   // 局部變量聲明
   int a = 100;
   int b = 200;
 
   // 檢查布爾條件
   if( a == 100 )
   {
       // 若是條件爲真,則檢查下面的條件
       if( b == 200 )
       {
          // 若是條件爲真,則輸出下面的語句
          cout << "a 的值是 100,且 b 的值是 200" << endl;
       }
   }
   cout << "a 的準確值是 " << a << endl;
   cout << "b 的準確值是 " << b << endl;
 
   return 0;
}

switch語句

一個 switch 語句容許測試一個變量等於多個值時的狀況。每一個值稱爲一個 case,且被測試的變量會對每一個 switch case 進行檢查。

C++ 中 switch 語句的語法:

switch(expression){ case constant-expression : statement(s); break; // 可選的 case constant-expression : statement(s); break; // 可選的 // 您能夠有任意數量的 case 語句 default : // 可選的 statement(s); }

switch 語句必須遵循下面的規則:

  • switch 語句中的 expression 必須是一個整型或枚舉類型,或者是一個 class 類型,其中 class 有一個單一的轉換函數將其轉換爲整型或枚舉類型。
  • 在一個 switch 中能夠有任意數量的 case 語句。每一個 case 後跟一個要比較的值和一個冒號。
  • case 的 constant-expression 必須與 switch 中的變量具備相同的數據類型,且必須是一個常量或字面量。
  • 當被測試的變量等於 case 中的常量時,case 後跟的語句將被執行,直到遇到 break 語句爲止。
  • 當遇到 break 語句時,switch 終止,控制流將跳轉到 switch 語句後的下一行。
  • 不是每個 case 都須要包含 break。若是 case 語句不包含 break,控制流將會 繼續 後續的 case,直到遇到 break 爲止。
  • 一個 switch 語句能夠有一個可選的 default case,出如今 switch 的結尾。default case 可用於在上面全部 case 都不爲真時執行一個任務。default case 中的 break 語句不是必需的。
#include <iostream>
using namespace std;
 
int main ()
{
   // 局部變量聲明
   char grade = 'D';
 
   switch(grade)
   {
   case 'A' :
      cout << "很棒!" << endl; 
      break;
   case 'B' :
   case 'C' :
      cout << "作得好" << endl;
      break;
   case 'D' :
      cout << "您經過了" << endl;
      break;
   case 'F' :
      cout << "最好再試一下" << endl;
      break;
   default :
      cout << "無效的成績" << endl;
   }
   cout << "您的成績是 " << grade << endl;
 
   return 0;
}

嵌套switch語句

能夠把一個 switch 做爲一個外部 switch 的語句序列的一部分,便可以在一個 switch 語句內使用另外一個 switch 語句。即便內部和外部 switch 的 case 常量包含共同的值,也沒有矛盾。

C++ 中的 switch 語句容許至少 256 個嵌套層次。

C++ 中 嵌套 switch 語句的語法:

switch(ch1) {
   case 'A': 
      cout << "這個 A 是外部 switch 的一部分";
      switch(ch2) {
         case 'A':
            cout << "這個 A 是內部 switch 的一部分";
            break;
         case 'B': // 內部 B case 代碼
      }
      break;
   case 'B': // 外部 B case 代碼
}

注意:? : 運算符

咱們已經在前面的章節中講解了條件運算符?:,能夠用來替代 if...else 語句。它的通常形式以下:

Exp1 ? Exp2 : Exp3;

其中,Exp一、Exp2 和 Exp3 是表達式。請注意,冒號的使用和位置。

? 表達式的值是由 Exp1 決定的。若是 Exp1 爲真,則計算 Exp2 的值,結果即爲整個 ? 表達式的值。若是 Exp1 爲假,則計算 Exp3 的值,結果即爲整個 ? 表達式的值。

3.循環結構

有的時候,可能須要屢次執行同一塊代碼。通常狀況下,語句是順序執行的:函數中的第一個語句先執行,接着是第二個語句,依此類推。編程語言提供了容許更爲複雜的執行路徑的多種控制結構。循環語句容許咱們屢次執行一個語句或語句組,下面是大多數編程語言中循環語句的通常形式:


循環類型。

循環類型 描述
while循環 當給定條件爲真時,重複語句或語句組。它會在執行循環主體以前測試條件。
for循環 屢次執行一個語句序列,簡化管理循環變量的代碼。
do-while循環 除了它是在循環主體結尾測試條件外,其餘與 while 語句相似。
嵌套循環 您能夠在 while、for 或 do..while 循環內使用一個或多個循環。

 while循環

只要給定的條件爲真,while 循環語句會重複執行一個目標語句。

C++ 中 while 循環的語法:

while(condition)
{
   statement(s);
}

在這裏,statement(s) 能夠是一個單獨的語句,也能夠是幾個語句組成的代碼塊。condition 能夠是任意的表達式,當爲任意非零值時都爲真。當條件爲真時執行循環。當條件爲假時,程序流將繼續執行緊接着循環的下一條語句。

int main() {
	int a=3;
	while (a<30)
	{
		cout << a;
		a++;
	}
	return 0;
}

for循環

for 循環容許您編寫一個執行特定次數的循環的重複控制結構。

C++ 中 for 循環的語法:

for ( init; condition; increment )
{
   statement(s);
}

下面是 for 循環的控制流:

  1. init 會首先被執行,且只會執行一次。這一步容許您聲明並初始化任何循環控制變量。您也能夠不在這裏寫任何語句,只要有一個分號出現便可。
  2. 接下來,會判斷 condition。若是爲真,則執行循環主體。若是爲假,則不執行循環主體,且控制流會跳轉到緊接着 for 循環的下一條語句。
  3. 在執行完 for 循環主體後,控制流會跳回上面的 increment 語句。該語句容許您更新循環控制變量。該語句能夠留空,只要在條件後有一個分號出現便可。
  4. 條件再次被判斷。若是爲真,則執行循環,這個過程會不斷重複(循環主體,而後增長步值,再而後從新判斷條件)。在條件變爲假時,for 循環終止。
#include <iostream>
using namespace std;
 
int main ()
{
   // for 循環執行
   for( int a = 10; a < 20; a = a + 1 )
   {
       cout << "a 的值:" << a << endl;
   }
 
   return 0;
}

基於範圍的for循環(C++11)

for 語句容許簡單的範圍迭代:

int my_array[5] = {1, 2, 3, 4, 5};
// 每一個數組元素乘於 2
for (int &x : my_array)
{
    x *= 2;
    cout << x << endl;  
}
// auto 類型也是 C++11 新標準中的,用來自動獲取變量的類型
for (auto &x : my_array) {
    x *= 2;
    cout << x << endl;  
}

上面for述句的第一部分定義被用來作範圍迭代的變量,就像被聲明在通常for循環的變量同樣,其做用域僅只於循環的範圍。而在":"以後的第二區塊,表明將被迭代的範圍。

實例

#include<iostream>  
#include<string>  
#include<cctype>  
using namespace std;  
  
int main()  
{  
    string str("some string");  
    // range for 語句  
    for(auto &c : str)  
    {  
        c = toupper(c);  
    }  
    cout << str << endl;  
    return 0;  
}

上面的程序使用Range for語句遍歷一個字符串,並將全部字符所有變爲大寫,而後輸出結果爲:

SOME STRING

do-while循環

不像 forwhile 循環,它們是在循環頭部測試循環條件。do...while 循環是在循環的尾部檢查它的條件。

do...while 循環與 while 循環相似,可是 do...while 循環會確保至少執行一次循環。

C++ 中 do...while 循環的語法:

do
{
   statement(s);

}while( condition );

請注意,條件表達式出如今循環的尾部,因此循環中的 statement(s) 會在條件被測試以前至少執行一次。

若是條件爲真,控制流會跳轉回上面的 do,而後從新執行循環中的 statement(s)。這個過程會不斷重複,直到給定條件變爲假爲止。

#include <iostream>
using namespace std;
 
int main ()
{
   // 局部變量聲明
   int a = 10;

   // do 循環執行
   do
   {
       cout << "a 的值:" << a << endl;
       a = a + 1;
   }while( a < 20 );
 
   return 0;
}
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

嵌套循環

一個循環內能夠嵌套另外一個循環。C++ 容許至少 256 個嵌套層次。

C++ 中 嵌套 for 循環 語句的語法:

for ( init; condition; increment ) { for ( init; condition; increment ) { statement(s); } statement(s); // 能夠放置更多的語句 }

C++ 中 嵌套 while 循環 語句的語法:

while(condition) { while(condition) { statement(s); } statement(s); // 能夠放置更多的語句 }

C++ 中 嵌套 do...while 循環 語句的語法:

do { statement(s); // 能夠放置更多的語句 do { statement(s); }while( condition ); }while( condition );

關於嵌套循環有一點值得注意,能夠在任何類型的循環內嵌套其餘任何類型的循環。好比,一個 for 循環能夠嵌套在一個 while 循環內,反之亦然。

循環控制語句

循環控制語句更改執行的正常序列。當執行離開一個範圍時,全部在該範圍中建立的自動對象都會被銷燬。

C++ 提供了下列的控制語句。點擊連接查看每一個語句的細節。

控制語句 描述
break語句 終止 loopswitch 語句,程序流將繼續執行緊接着 loop 或 switch 的下一條語句。
continue語句 引發循環跳過主體的剩餘部分,當即從新開始測試條件。
goto語句 將控制轉移到被標記的語句。可是不建議在程序中使用 goto 語句。

break語句 

C++ 中 break 語句有如下兩種用法:

  1. break 語句出如今一個循環內時,循環會當即終止,且程序流將繼續執行緊接着循環的下一條語句。
  2. 它可用於終止 switch 語句中的一個 case。

若是您使用的是嵌套循環(即一個循環內嵌套另外一個循環),break 語句會中止執行最內層的循環,而後開始執行該塊以後的下一行代碼。

continue語句

C++ 中的 continue 語句有點像 break 語句。但它不是強迫終止,continue 會跳過當前循環中的代碼,強迫開始下一次循環。

對於 for 循環,continue 語句會致使執行條件測試和循環增量部分。對於 whiledo...while 循環,continue 語句會致使程序控制回到條件測試上。

語法

C++ 中 continue 語句的語法:

goto語句

goto 語句容許把控制無條件轉移到同一函數內的被標記的語句。

注意:在任何編程語言中,都不建議使用 goto 語句。由於它使得程序的控制流難以跟蹤,使程序難以理解和難以修改。任何使用 goto 語句的程序能夠改寫成不須要使用 goto 語句的寫法。

語法

C++ 中 goto 語句的語法:

goto label;
..
.
label: statement;

在這裏,label 是識別被標記語句的標識符,能夠是任何除 C++ 關鍵字之外的純文本。標記語句能夠是任何語句,放置在標識符和冒號(:)後邊。

無限循環

若是條件永遠不爲假,則循環將變成無限循環。for 循環在傳統意義上可用於實現無限循環。因爲構成循環的三個表達式中任何一個都不是必需的,您能夠將某些條件表達式留空來構成一個無限循環。

#include <iostream>
using namespace std;
 
int main ()
{
 
   for( ; ; )
   {
      printf("This loop will run forever.\n");
   }
 
   return 0;
}

當條件表達式不存在時,它被假設爲真。您也能夠設置一個初始值和增量表達式,可是通常狀況下,C++ 程序員偏向於使用 for(;;) 結構來表示一個無限循環。

注意:按 Ctrl + C 鍵終止一個無限循環。

                        掃描 關注公衆號 java一號。更重要的是小猿願成爲你編程路上的一個朋友!

文章首發地址: www.javayihao.top

首發公衆號: java一號

相關文章
相關標籤/搜索