C/C++學習筆記 基礎入門系列(十)

C/C++基礎入門系列

寫在前面的話

C++學了一段時間了,現在在整理筆記,作爲備份和分享,會一點點的連載上來,如果此時的你在看這篇文章,而且想學C/C++,本篇系列文章或許能幫助你打基礎,爲了方便大家,代碼我也直接碼在上面了,如果複製粘貼都懶得做的話,過段時間我會把整理好的代碼打包傳到下載裏面。

目錄

第一部分 HelloWorld的起點
第二部分 初探數據類型(一)
第三部分 初探數據類型(二)
第四部分 認識運算符(一)
第五部分 認識運算符(二)
第六部分 理清思路,寫好邏輯結構(一)
第七部分 理清思路,寫好邏輯結構(二)
第八部分 理清思路,寫好邏輯結構(三)
第九部分 數據處理神器之數組(一)
第十部分 數據處理神器之數組(二)
第十一部分 寫好函數,學會功能複用(一)
第十二部分 寫好函數,學會功能複用(二)

第十部分 數據處理神器之數組(二)

5.2.3 冒泡排序

作用: 最常用的排序算法,對數組內的元素進行排序

  1. 比較相鄰元素,如果第一個比第二個大,就交換他們兩個
  2. 對每一對相鄰元素做同樣的工作,執行完畢後,找到一個最大值。
  3. 重複以上步驟,每次比較數-1,知道不需要比較。

示例: 將數組{4, 2, 8, 0, 5, 7, 8, 9, 6, 3, 1, 10, 12 }升序排列

#include<iostream>
using namespace std;

int main() {

	int arr[] = { 4, 2, 8, 0, 5, 7, 8, 9, 6, 3, 1, 10, 12 };

	for (int i = 0; i <= sizeof(arr) / sizeof(arr[0]) - 1; i++) {
		cout << arr[i] << " ";
	}

	//// 外層次數 = 元素個數 - 1
	//for (int i = 0; i < 13 - 1; i++) {
	//	// 內層次數 = 元素個數 - 當前輪數 - 1
	//	for (int j = 0; j < 13 - 1 - i; j++) {
	//		if (arr[j] > arr[j + 1]) {
	//			int temp = arr[j];
	//			arr[j] = arr[j + 1];
	//			arr[j + 1] = temp;
	//		}
	//	}
	//}

	for (int i = 0; i <= sizeof(arr) / sizeof(arr[0])-2; i++) {
		for (int j = 0; j <= sizeof(arr) / sizeof(arr[0]) - 2 - i; j++) {
			if (arr[j] > arr[j + 1]) {	// 判斷大小,大的靠前
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}

	cout << endl;

	for (int i = 0; i <= sizeof(arr) / sizeof(arr[0]) - 1; i++) {
		cout << arr[i] << " ";
	}

	cout << endl;

	system("pause");
	return 0;
}

5.3 二維數組

二維數組就是在一維數組基礎上,再增加加一個維度

5.3.1 二維數組的定義

二維數組有四種定義方式:

  1. 數據類型 數組名[行數][列數];
  2. 數據類型 數組名[行數][列數] = {{數據1, 數據2, ...},{數據3, 數據4, ...}, ..., {...}};
  3. 數據類型 數組名[行數][列數] = {數據1, 數據2, 數據3, 數據4, ...};
  4. 數據類型 數組名[][列數] = {數據1, 數據2, 數據3, 數據4, ...};

建議:以上四種定義方式,使用第二種更直觀,可提高代碼的可讀性

示例:

#include<iostream>
using namespace std;

int main() {

	// 定義1
	/*int arr[2][3];
	arr[0][0] = 1;
	arr[0][1] = 2;
	arr[0][2] = 3;
	arr[1][0] = 4;
	arr[1][1] = 5;
	arr[1][2] = 6;*/

	// 定義2(推薦)
	/*int arr[2][3] = {
		{1, 2, 3},
		{4, 5, 6}
	};*/

	// 定義3
	//int arr[2][3] = { 1, 2, 3, 4, 5, 6 };
	
	// 定義4
	int arr[][3] = { 1, 2, 3, 4, 5, 6 };

	// 輸出1
	/*cout << arr[0][0] << endl;
	cout << arr[0][1] << endl;
	cout << arr[0][2] << endl;
	cout << arr[1][0] << endl;
	cout << arr[1][1] << endl;
	cout << arr[1][2] << endl;
*/
	// 輸出2
	/*for (int i = 0; i <= 1; i++) {
		for(int j = 0; j <= 2; j++){
			cout << arr[i][j] << endl;
		}
	}*/

	// 輸出3
	for (int i = 0; i <= 1; i++) {
		for (int j = 0; j <= 2; j++) {
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}

	system("pause");
	return 0;
}

5.3.2 二維數組數組名

  • 查看二維數組佔用內存空間
  • 獲取二維數組首地址

示例:

#include<iostream>
using namespace std;

int main() {

	
	int arr[2][3] = {
		{1, 2, 3},
		{4, 5, 6}
	};

	// 查看內存大小
	cout << "二維數組佔用空間:" << sizeof(arr) << endl;
	cout << "第一行佔用空間:" << sizeof(arr[0]) << endl;
	cout << "第一個元素佔用空間:" << sizeof(arr[0][0]) << endl;

	cout << "二維數組行數:" << sizeof(arr) / sizeof(arr[0]) << endl;
	cout << "二維數組列數:" << sizeof(arr[0])/sizeof(arr[0][0]) << endl;

	// 查看首地址
	cout << "二維數組首地址:" << (int)arr << endl;
	cout << "第二行首地址:" << (int)arr[1] << endl;
	cout << "第二行第二列元素地址:" << (int)&arr[1][1] << endl;


	system("pause");
	return 0;
}

5.3.3 二維數組應用案例

考試成績統計:

案例描述:有三名同學(張三、李四、王五),在一次考試中成績分別如下,請分別輸出三名同學的成績和總成績

姓名 語文 數學 英語
張三 100 100 100
李四 90 80 97
王五 80 70 60

示例:

#include<iostream>
#include<string>
using namespace std;

int main() {

	int score[3][3] = {
		{100, 100, 100},
		{90, 80, 97},
		{80, 70, 60}
	};
	string name[3] = { "張三", "李四", "王五" };

	cout << "姓名\t語文\t數學\t英語\t總成績" << endl;

	for (int i = 0; i <= 2; i++){
		cout << name[i] << "\t";
		for (int j = 0; j <= 2; j++) {
			cout << score[i][j] << "\t";
		}
		cout << score[i][0] + score[i][1] + score[i][2] << endl;
	}

	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章