一、二維數組

二維數組可以看作是“數組的數組”,常用於表示表格、矩陣等具有行和列結構的數據。

聲明方式:

int arr[3][4];  // 3 行 4 列的整型二維數組

初始化:

int matrix[2][3] = {
    {1, 2, 3},   // 第0行
    {4, 5, 6}    // 第1行
};

二、循環嵌套

為了遍歷二維數組的所有元素,通常使用嵌套的 for 循環:外層控制行,內層控制列。

示例:遍歷並打印二維數組

/*
循環嵌套和二位數組
*/
#include<iostream>
using namespace std;

int main() {
    // 二維數組的定義,存儲一個班級學生的所有科目分數,3個同學,4個學科成績
    // int students[3][4];
    
    // 二維數組的初始化
    int students[3][4] = {
        {10, 20, 30, 40},
        {20, 30, 40, 50},
        {30, 40, 50, 60}
    };

    // 二維數組賦值操作
    students[2][2] = 80;
    students[3][1] = 70;

    // 二維數組循環遍歷, ++i 比 i++ 效率好點
    /*for (int i = 0; i < 3; ++i) {
        for (int j = 0; i < 4; ++j) {
            cout << "students[" << i << "][" << j << "] = " << students[i][j] << endl;
        }
    }*/

    // 製表
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            cout << students[i][j];
            cout << ",";
        }
        cout << endl;
    }
    
    return 0;
}
10,20,30,40,
20,30,40,50,
30,40,80,60,

三、複習


1.入口條件循環和出口條件循環之間的區別是什麼?各種C++循環分別屬於其中的哪一種?

入口條件循環:必須滿足條件才能進入循環體 for , while

出口條件循環:在循環的每次迭代之後檢查測試條件,這保證了至少執行循環體中的內容一次 do while

2.如果下面的代碼片段是有效程序的組成部分,它將打印什麼內容?

int i;

for (i=0; i<5; i++)

cout <<i;

cout << endl;

#include<iostream>
using namespace std;

int main() {

    int i;
    for (i = 0; i < 5; i++)
    cout << i;
    cout << endl;
    return 0;
}

3.如果下面的代碼片段是有效程序的組成部分,它將打印什麼內容?

int j;

for (j=0;j<11;j+=3)

cout<<j;

cout << endl << j<< endl;

xaye@orange:~/code/dev/17$ ./a.out 
0369
12

4. 編寫一個打印1、2、4、8、16、32、64的for循環,每輪循環都將計數變量的值乘以2。

#include<iostream>
using namespace std;

int main() {
    int i;
    for (i = 1; i <= 64; i*=2) {
    	cout << i << " "<< endl;
    }
    return 0;
}

5.下面的語句是否有效?如果無效,原因是什麼?如果有效,它將完成什麼工作?

int x=(1,024); // 有效

第二部分的語句又如何呢?

int y;

y= 1,024; // 有效

xaye@orange:~/code/dev/17$ ./a.out 
y = 1