C++ 入門篇

C++基礎入門

1 C++初識

1.1 第一個C++程式

編寫一個C++程式總共分為4個步驟

  • 創建項目
  • 創建文件
  • 編寫程式碼
  • 運行程式

1.1.1 創建項目

​ Visual Studio是我們用來編寫C++程式的主要工具,我們先將它打開

1541383178746

1541384366413

1.1.2 創建文件

右鍵源文件,選擇添加->新建項

1541383817248

給C++文件起個名稱,然後點擊添加即可。

1541384140042

1.1.3 編寫程式碼

#include<iostream>
using namespace std;

int main() {

	cout << "Hello world" << endl;

	system("pause");

	return 0;
}

1.1.4 運行程式

1541384818688

1.2 注釋

作用:在程式碼中加一些說明和解釋,方便自己或其他程式設計師程式設計師閱讀程式碼

兩種格式

  1. 單行注釋// 描述資訊
    • 通常放在一行程式碼的上方,或者一條語句的末尾,對該行程式碼說明
  2. 多行注釋/* 描述資訊 */
    • 通常放在一段程式碼的上方,對該段程式碼做整體說明

提示:編譯器在編譯程式碼時,會忽略注釋的內容

1.3 變數

作用:給一段指定的記憶體空間起名,方便操作這段記憶體

語法數據類型 變數名 = 初始值;

示例:

#include<iostream>
using namespace std;

int main() {

	//變數的定義
	//語法:數據類型  變數名 = 初始值

	int a = 10;

	cout << "a = " << a << endl;
	
	system("pause");

	return 0;
}

注意:C++在創建變數時,必須給變數一個初始值,否則會報錯

1.4 常量

作用:用於記錄程式中不可更改的數據

C++定義常量兩種方式

  1. #define 宏常量: #define 常量名 常量值

    • 通常在文件上方定義,表示一個常量
  2. const修飾的變數 const 數據類型 常量名 = 常量值

    • 通常在變數定義前加關鍵字const,修飾該變數為常量,不可修改

示例:

//1、宏常量
#define day 7

int main() {

	cout << "一周里總共有 " << day << " 天" << endl;
	//day = 8;  //報錯,宏常量不可以修改

	//2、const修飾變數
	const int month = 12;
	cout << "一年裡總共有 " << month << " 個月份" << endl;
	//month = 24; //報錯,常量是不可以修改的
	
	
	system("pause");

	return 0;
}

1.5 關鍵字

作用:關鍵字是C++中預先保留的單詞(標識符)

  • 在定義變數或者常量時候,不要用關鍵字

C++關鍵字如下:

asm do if return typedef
auto double inline short typeid
bool dynamic_cast int signed typename
break else long sizeof union
case enum mutable static unsigned
catch explicit namespace static_cast using
char export new struct virtual
class extern operator switch void
const false private template volatile
const_cast float protected this wchar_t
continue for public throw while
default friend register true
delete goto reinterpret_cast try

提示:在給變數或者常量起名稱時候,不要用C++得關鍵字,否則會產生歧義。

1.6 標識符命名規則

作用:C++規定給標識符(變數、常量)命名時,有一套自己的規則

  • 標識符不能是關鍵字
  • 標識符只能由字母、數字、下劃線組成
  • 第一個字元必須為字母或下劃線
  • 標識符中字母區分大小寫

建議:給標識符命名時,爭取做到見名知意的效果,方便自己和他人的閱讀

2 數據類型

C++規定在創建一個變數或者常量時,必須要指定出相應的數據類型,否則無法給變數分配記憶體

2.1 整型

作用:整型變數表示的是整數類型的數據

C++中能夠表示整型的類型有以下幾種方式,區別在於所佔記憶體空間不同

數據類型 佔用空間 取值範圍
short(短整型) 2位元組 (-2^15 ~ 2^15-1)
int(整型) 4位元組 (-2^31 ~ 2^31-1)
long(長整形) Windows為4位元組,Linux為4位元組(32位),8位元組(64位) (-2^31 ~ 2^31-1)
long long(長長整形) 8位元組 (-2^63 ~ 2^63-1)

2.2 sizeof關鍵字

作用:利用sizeof關鍵字可以統計數據類型所佔記憶體大小

語法: sizeof( 數據類型 / 變數)

示例:

int main() {

	cout << "short 類型所佔記憶體空間為: " << sizeof(short) << endl;

	cout << "int 類型所佔記憶體空間為: " << sizeof(int) << endl;

	cout << "long 類型所佔記憶體空間為: " << sizeof(long) << endl;

	cout << "long long 類型所佔記憶體空間為: " << sizeof(long long) << endl;

	system("pause");

	return 0;
}

整型結論short < int <= long <= long long

2.3 實型(浮點型)

作用:用於表示小數

浮點型變數分為兩種:

  1. 單精度float
  2. 雙精度double

兩者的區別在於表示的有效數字範圍不同。

數據類型 佔用空間 有效數字範圍
float 4位元組 7位有效數字
double 8位元組 15~16位有效數字

示例:

int main() {

	float f1 = 3.14f;
  //不加f編譯器默認為雙精度double型,加上f會形成單精度float
	double d1 = 3.14;

	cout << f1 << endl;
	cout << d1<< endl;

	cout << "float  sizeof = " << sizeof(f1) << endl;
	cout << "double sizeof = " << sizeof(d1) << endl;

	//科學計數法
	float f2 = 3e2; // 3 * 10 ^ 2 
	cout << "f2 = " << f2 << endl;

	float f3 = 3e-2;  // 3 * 0.1 ^ 2
	cout << "f3 = " << f3 << endl;

	system("pause");

	return 0;
}

2.4 字元型

作用:字元型變數用於顯示單個字元

語法:char ch = 'a';

注意1:在顯示字元型變數時,用單引號將字元括起來,不要用雙引號

注意2:單引號內只能有一個字元,不可以是字元串

  • C和C++中字元型變數只佔用1個位元組
  • 字元型變數並不是把字元本身放到記憶體中存儲,而是將對應的ASCII編碼放入到存儲單元

示例:

int main() {
	
	char ch = 'a';
	cout << ch << endl;
	cout << sizeof(char) << endl;

	//ch = "abcde"; //錯誤,不可以用雙引號
	//ch = 'abcde'; //錯誤,單引號內只能引用一個字元

	cout << (int)ch << endl;  //查看字元a對應的ASCII碼
	ch = 97; //可以直接用ASCII給字元型變數賦值
	cout << ch << endl;

	system("pause");

	return 0;
}

ASCII碼錶格:

ASCII 控制字元 ASCII 字元 ASCII 字元 ASCII 字元
0 NUT 32 (space) 64 @ 96
1 SOH 33 ! 65 A 97 a
2 STX 34 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 / 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 `
31 US 63 ? 95 _ 127 DEL

ASCII 碼大致由以下兩部分組成:

  • ASCII 非列印控制字元: ASCII 表上的數字 0-31 分配給了控制字元,用於控制像印表機等一些外圍設備。
  • ASCII 列印字元:數字 32-126 分配給了能在鍵盤上找到的字元,當查看或列印文檔時就會出現。

2.5 轉義字元

作用:用於表示一些不能顯示出來的ASCII字元

現階段我們常用的轉義字元有: \n \\ \t

轉義字元 含義 ASCII碼值(十進位)
\a 警報 007
\b 退格(BS) ,將當前位置移到前一列 008
\f 換頁(FF),將當前位置移到下頁開頭 012
\n 換行(LF) ,將當前位置移到下一行開頭 010
\r 回車(CR) ,將當前位置移到本行開頭 013
\t 水平製表(HT) (跳到下一個TAB位置) 009
\v 垂直製表(VT) 011
\\ 代表一個反斜線字元”” 092
代表一個單引號(撇號)字元 039
代表一個雙引號字元 034
? 代表一個問號 063
\0 數字0 000
\ddd 8進位轉義字元,d範圍0~7 3位8進位
\xhh 16進位轉義字元,h範圍09,af,A~F 3位16進位

示例:

int main() {
	
	
	cout << "\\" << endl;
	cout << "\tHello" << endl;
	cout << "\n" << endl;
	cout<<"\t"<<endl;
    //\t相當於一個tab
	system("pause");

	return 0;
}

2.6 字元串型

作用:用於表示一串字元

兩種風格

  1. C風格字元串char 變數名[] = "字元串值"

    示例:

    int main() {
    
    	char str1[] = "hello world";
    	cout << str1 << endl;
        
    	system("pause");
    
    	return 0;
    }
    

注意:C風格的字元串要用雙引號括起來

  1. C++風格字元串string 變數名 = "字元串值"

    示例:

    int main() {
    
    	string str = "hello world";
    	cout << str << endl;
    	
    	system("pause");
    
    	return 0;
    }
    

注意:C++風格字元串,需要加入頭文件#include<string>

2.7 布爾類型 bool

作用:布爾數據類型代表真或假的值

bool類型只有兩個值:

  • true — 真(本質是1)
  • false — 假(本質是0)

bool類型占1個位元組大小

示例:

int main() {

	bool flag = true;
	cout << flag << endl; // 1

	flag = false;
	cout << flag << endl; // 0

	cout << "size of bool = " << sizeof(bool) << endl; //1
	
	system("pause");

	return 0;
}

2.8 數據的輸入

作用:用於從鍵盤獲取數據

關鍵字:cin

語法: cin >> 變數

示例:

int main(){

	//整型輸入
	int a = 0;
	cout << "請輸入整型變數:" << endl;
	cin >> a;
	cout << a << endl;

	//浮點型輸入
	double d = 0;
	cout << "請輸入浮點型變數:" << endl;
	cin >> d;
	cout << d << endl;

	//字元型輸入
	char ch = 0;
	cout << "請輸入字元型變數:" << endl;
	cin >> ch;
	cout << ch << endl;

	//字元串型輸入
	string str;
	cout << "請輸入字元串型變數:" << endl;
	cin >> str;
	cout << str << endl;

	//布爾類型輸入
	bool flag = true;
	cout << "請輸入布爾型變數:" << endl;
	cin >> flag;
	cout << flag << endl;
	system("pause");
	return EXIT_SUCCESS;
}

3 運算符

作用:用於執行程式碼的運算

本章我們主要講解以下幾類運算符:

運算符類型 作用
算術運算符 用於處理四則運算
賦值運算符 用於將表達式的值賦給變數
比較運算符 用於表達式的比較,並返回一個真值或假值
邏輯運算符 用於根據表達式的值返回真值或假值

3.1 算術運算符

作用:用於處理四則運算

算術運算符包括以下符號:

運算符 術語 示例 結果
+ 正號 +3 3
負號 -3 -3
+ 10 + 5 15
10 – 5 5
* 10 * 5 50
/ 10 / 5 2
% 取模(取余) 10 % 3 1
++ 前置遞增 a=2; b=++a; a=3; b=3;
++ 後置遞增 a=2; b=a++; a=3; b=2;
前置遞減 a=2; b=–a; a=1; b=1;
後置遞減 a=2; b=a–; a=1; b=2;

示例1:

//加減乘除
int main() {

	int a1 = 10;
	int b1 = 3;

	cout << a1 + b1 << endl;
	cout << a1 - b1 << endl;
	cout << a1 * b1 << endl;
	cout << a1 / b1 << endl;  //兩個整數相除結果依然是整數

	int a2 = 10;
	int b2 = 20;
	cout << a2 / b2 << endl; 

	int a3 = 10;
	int b3 = 0;
	//cout << a3 / b3 << endl; //報錯,除數不可以為0


	//兩個小數可以相除
	double d1 = 0.5;
	double d2 = 0.25;
	cout << d1 / d2 << endl;

	system("pause");

	return 0;
}

總結:在除法運算中,除數不能為0

示例2:

//取模
int main() {

	int a1 = 10;
	int b1 = 3;

	cout << 10 % 3 << endl;

	int a2 = 10;
	int b2 = 20;

	cout << a2 % b2 << endl;

	int a3 = 10;
	int b3 = 0;

	//cout << a3 % b3 << endl; //取模運算時,除數也不能為0

	//兩個小數不可以取模
	double d1 = 3.14;
	double d2 = 1.1;

	//cout << d1 % d2 << endl;

	system("pause");

	return 0;
}

總結:只有整型變數可以進行取模運算

示例3:

//遞增
int main() {

	//後置遞增
	int a = 10;
	a++; //等價於a = a + 1
	cout << a << endl; // 11

	//前置遞增
	int b = 10;
	++b;
	cout << b << endl; // 11

	//區別
	//前置遞增先對變數進行++,再計算表達式
	int a2 = 10;
	int b2 = ++a2 * 10;
	cout << b2 << endl;

	//後置遞增先計算表達式,後對變數進行++
	int a3 = 10;
	int b3 = a3++ * 10;
	cout << b3 << endl;

	system("pause");

	return 0;
}

總結:前置遞增先對變數進行++,再計算表達式,後置遞增相反

3.2 賦值運算符

作用:用於將表達式的值賦給變數

賦值運算符包括以下幾個符號:

運算符 術語 示例 結果
= 賦值 a=2; b=3; a=2; b=3;
+= 加等於 a=0; a+=2; a=2;
-= 減等於 a=5; a-=3; a=2;
*= 乘等於 a=2; a*=2; a=4;
/= 除等於 a=4; a/=2; a=2;
%= 模等於 a=3; a%2; a=1;

示例:

int main() {

	//賦值運算符

	// =
	int a = 10;
	a = 100;
	cout << "a = " << a << endl;

	// +=
	a = 10;
	a += 2; // a = a + 2;
	cout << "a = " << a << endl;

	// -=
	a = 10;
	a -= 2; // a = a - 2
	cout << "a = " << a << endl;

	// *=
	a = 10;
	a *= 2; // a = a * 2
	cout << "a = " << a << endl;

	// /=
	a = 10;
	a /= 2;  // a = a / 2;
	cout << "a = " << a << endl;

	// %=
	a = 10;
	a %= 2;  // a = a % 2;
	cout << "a = " << a << endl;

	system("pause");

	return 0;
}

3.3 比較運算符

作用:用於表達式的比較,並返回一個真值或假值

比較運算符有以下符號:

運算符 術語 示例 結果
== 相等於 4 == 3 0
!= 不等於 4 != 3 1
< 小於 4 < 3 0
> 大於 4 > 3 1
<= 小於等於 4 <= 3 0
>= 大於等於 4 >= 1 1

示例:

int main() {

	int a = 10;
	int b = 20;

	cout << (a == b) << endl; // 0 

	cout << (a != b) << endl; // 1

	cout << (a > b) << endl; // 0

	cout << (a < b) << endl; // 1

	cout << (a >= b) << endl; // 0

	cout << (a <= b) << endl; // 1
	
	system("pause");

	return 0;
}

注意:C和C++ 語言的比較運算中, 「真」用數字「1」來表示, 「假」用數字「0」來表示。

3.4 邏輯運算符

作用:用於根據表達式的值返回真值或假值

邏輯運算符有以下符號:

運算符 術語 示例 結果
! !a 如果a為假,則!a為真; 如果a為真,則!a為假。
&& a && b 如果a和b都為真,則結果為真,否則為假。
|| a || b 如果a和b有一個為真,則結果為真,二者都為假時,結果為假。

示例1:邏輯非

//邏輯運算符  --- 非
int main() {

	int a = 10;

	cout << !a << endl; // 0

	cout << !!a << endl; // 1

	system("pause");

	return 0;
}

總結: 真變假,假變真

示例2:邏輯與

//邏輯運算符  --- 與
int main() {

	int a = 10;
	int b = 10;

	cout << (a && b) << endl;// 1

	a = 10;
	b = 0;

	cout << (a && b) << endl;// 0 

	a = 0;
	b = 0;

	cout << (a && b) << endl;// 0

	system("pause");

	return 0;
}

總結:邏輯運算符總結: 同真為真,其餘為假

示例3:邏輯或

//邏輯運算符  --- 或
int main() {

	int a = 10;
	int b = 10;

	cout << (a || b) << endl;// 1

	a = 10;
	b = 0;

	cout << (a || b) << endl;// 1 

	a = 0;
	b = 0;

	cout << (a || b) << endl;// 0

	system("pause");

	return 0;
}

邏輯運算符總結: 同假為假,其餘為真

4 程式流程結構

C/C++支援最基本的三種程式運行結構:順序結構、選擇結構、循環結構

  • 順序結構:程式按順序執行,不發生跳轉
  • 選擇結構:依據條件是否滿足,有選擇的執行相應功能
  • 循環結構:依據條件是否滿足,循環多次執行某段程式碼

4.1 選擇結構

4.1.1 if語句

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

if語句的三種形式

  • 單行格式if語句

  • 多行格式if語句

  • 多條件的if語句

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

    img

    示例:

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

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

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

img

示例:

int main() {

	int score = 0;

	cout << "請輸入考試分數:" << endl;

	cin >> score;

	if (score > 600)
	{
		cout << "我考上了一本大學" << endl;
	}
	else
	{
		cout << "我未考上一本大學" << endl;
	}

	system("pause");

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

img

示例:

	int main() {

	int score = 0;

	cout << "請輸入考試分數:" << endl;

	cin >> score;

	if (score > 600)
	{
		cout << "我考上了一本大學" << endl;
	}
	else if (score > 500)
	{
		cout << "我考上了二本大學" << endl;
	}
	else if (score > 400)
	{
		cout << "我考上了三本大學" << endl;
	}
	else
	{
		cout << "我未考上本科" << endl;
	}

	system("pause");

	return 0;
}

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

案例需求:

  • 提示用戶輸入一個高考考試分數,根據分數做如下判斷
  • 分數如果大於600分視為考上一本,大於500分考上二本,大於400考上三本,其餘視為未考上本科;
  • 在一本分數中,如果大於700分,考入北大,大於650分,考入清華,大於600考入人大。

示例:

int main() {

	int score = 0;

	cout << "請輸入考試分數:" << endl;

	cin >> score;

	if (score > 600)
	{
		cout << "我考上了一本大學" << endl;
		if (score > 700)
		{
			cout << "我考上了北大" << endl;
		}
		else if (score > 650)
		{
			cout << "我考上了清華" << endl;
		}
		else
		{
			cout << "我考上了人大" << endl;
		}
		
	}
	else if (score > 500)
	{
		cout << "我考上了二本大學" << endl;
	}
	else if (score > 400)
	{
		cout << "我考上了三本大學" << endl;
	}
	else
	{
		cout << "我未考上本科" << endl;
	}

	system("pause");

	return 0;
}

練習案例: 三隻小豬稱體重

有三隻小豬ABC,請分別輸入三隻小豬的體重,並且判斷哪只小豬最重?三隻小豬

4.1.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;

	system("pause");

	return 0;
}

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

4.1.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;
	}

	system("pause");

	return 0;
}

注意1:switch語句中表達式類型只能是整型或者字元型

注意2:case里如果沒有break,那麼程式會一直向下執行

總結:與if語句比,對於多條件判斷時,switch的結構清晰,執行效率高,缺點是switch不可以判斷區間

4.2 循環結構

4.2.1 while循環語句

作用:滿足循環條件,執行循環語句

語法: while(循環條件){ 循環語句 }

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

img

示例:

int main() {

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

	return 0;
}

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

while循環練習案例:猜數字

案例描述:系統隨機生成一個1到100之間的數字,玩家進行猜測,如果猜錯,提示玩家數字過大或過小,如果猜對恭喜玩家勝利,並且退出遊戲。

猜數字

4.2.2 do…while循環語句

作用: 滿足循環條件,執行循環語句

語法: do{ 循環語句 } while(循環條件);

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

img

示例:

int main() {

	int num = 0;

	do
	{
		cout << num << endl;
		num++;

	} while (num < 10);
	
	
	system("pause");

	return 0;
}

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

練習案例:水仙花數

案例描述:水仙花數是指一個 3 位數,它的每個位上的數字的 3次冪之和等於它本身

例如:1^3 + 5^3+ 3^3 = 153

請利用do…while語句,求出所有3位數中的水仙花數

4.2.3 for循環語句

作用: 滿足循環條件,執行循環語句

語法: for(起始表達式;條件表達式;末尾循環體) { 循環語句; }

示例:

int main() {

	for (int i = 0; i < 10; i++)
	{
		cout << i << endl;
	}
	
	system("pause");

	return 0;
}

詳解:

1541673704101

注意:for循環中的表達式,要用分號進行分隔

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

練習案例:敲桌子

案例描述:從1開始數到數字100, 如果數字個位含有7,或者數字十位含有7,或者該數字是7的倍數,我們列印敲桌子,其餘數字直接列印輸出。

timg

4.2.4 嵌套循環

作用: 在循環體中再嵌套一層循環,解決一些實際問題

例如我們想在螢幕中列印如下圖片,就需要利用嵌套循環

1541676003486

示例:

int main() {

	//外層循環執行1次,內層循環執行1輪
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			cout << "*" << " ";
		}
		cout << endl;
	}

	system("pause");

	return 0;
}

練習案例:乘法口訣表

案例描述:利用嵌套循環,實現九九乘法表

0006018857256120_b

4.3 跳轉語句

4.3.1 break語句

作用: 用於跳出選擇結構或者循環結構

break使用的時機:

  • 出現在switch條件語句中,作用是終止case並跳出switch
  • 出現在循環語句中,作用是跳出當前的循環語句
  • 出現在嵌套循環中,跳出最近的內層循環語句

示例1:

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;
	}

	system("pause");

	return 0;
}

示例2:

int main() {
	//2、在循環語句中用break
	for (int i = 0; i < 10; i++)
	{
		if (i == 5)
		{
			break; //跳出循環語句
		}
		cout << i << endl;
	}

	system("pause");

	return 0;
}

示例3:

int main() {
	//在嵌套循環語句中使用break,退出內層循環
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			if (j == 5)
			{
				break;
			}
			cout << "*" << " ";
		}
		cout << endl;
	}
	
	system("pause");

	return 0;
}

4.3.2 continue語句

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

示例:

int main() {

	for (int i = 0; i < 100; i++)
	{
		if (i % 2 == 0)
		{
			continue;
		}
		cout << i << endl;
	}
	
	system("pause");

	return 0;
}

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

4.3.3 goto語句

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

語法: goto 標記;

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

示例:

int main() {

	cout << "1" << endl;

	goto FLAG;

	cout << "2" << endl;
	cout << "3" << endl;
	cout << "4" << endl;

	FLAG:

	cout << "5" << endl;
	
	system("pause");

	return 0;
}

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