C++ 入門篇
C++基礎入門
1 C++初識
1.1 第一個C++程式
編寫一個C++程式總共分為4個步驟
- 創建項目
- 創建文件
- 編寫程式碼
- 運行程式
1.1.1 創建項目
Visual Studio是我們用來編寫C++程式的主要工具,我們先將它打開
1.1.2 創建文件
右鍵源文件,選擇添加->新建項
給C++文件起個名稱,然後點擊添加即可。
1.1.3 編寫程式碼
#include<iostream>
using namespace std;
int main() {
cout << "Hello world" << endl;
system("pause");
return 0;
}
1.1.4 運行程式
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++定義常量兩種方式
-
#define 宏常量:
#define 常量名 常量值
- 通常在文件上方定義,表示一個常量
-
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 實型(浮點型)
作用:用於表示小數
浮點型變數分為兩種:
- 單精度float
- 雙精度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 字元串型
作用:用於表示一串字元
兩種風格
-
C風格字元串:
char 變數名[] = "字元串值"
示例:
int main() { char str1[] = "hello world"; cout << str1 << endl; system("pause"); return 0; }
注意:C風格的字元串要用雙引號括起來
-
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語句
-
單行格式if語句:
if(條件){ 條件滿足執行的語句 }
示例:
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條件表達式後不要加分號
- 多行格式if語句:
if(條件){ 條件滿足執行的語句 }else{ 條件不滿足執行的語句 };
示例:
int main() {
int score = 0;
cout << "請輸入考試分數:" << endl;
cin >> score;
if (score > 600)
{
cout << "我考上了一本大學" << endl;
}
else
{
cout << "我未考上一本大學" << endl;
}
system("pause");
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 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(循環條件){ 循環語句 }
解釋:只要循環條件的結果為真,就執行循環語句
示例:
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會先執行一次循環語句,再判斷循環條件
示例:
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;
}
詳解:
注意:for循環中的表達式,要用分號進行分隔
總結:while , do…while, for都是開發中常用的循環語句,for循環結構比較清晰,比較常用
練習案例:敲桌子
案例描述:從1開始數到數字100, 如果數字個位含有7,或者數字十位含有7,或者該數字是7的倍數,我們列印敲桌子,其餘數字直接列印輸出。
4.2.4 嵌套循環
作用: 在循環體中再嵌套一層循環,解決一些實際問題
例如我們想在螢幕中列印如下圖片,就需要利用嵌套循環
示例:
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;
}
練習案例:乘法口訣表
案例描述:利用嵌套循環,實現九九乘法表
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語句,以免造成程式流程混亂