IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> c++程序设计视频学习(第六天) -> 正文阅读

[数据结构与算法]c++程序设计视频学习(第六天)

5.2.1 一维数组定义

数组特点:

1.放在一块连续的内存空间中

2.数组中每个元素都是相同数据类型

定义方式:

1. 数据类型 数组名[ 数组长度 ]

#include <iostream>
using namespace std;

int main()
{
	//数组

	//1. 数据类型 数组名[ 数组长度 ]
	int arr[5];
	arr[0] = 10;
	arr[1] = 20;
	arr[2] = 30;
	arr[3] = 40;
	arr[4] = 50;
	//访问数据元素

	for (int i = 0; i < 5; i++)
	{
		cout << arr[i] << endl;
	}

	system("pause");
	return 0;
}

2.数据类型 数组名[ 数组长度 ] = {值1,值2 ...};

#include <iostream>
using namespace std;

int main()
{
	//数组

	//2. 数据类型 数组名[ 数组长度 ] = {值1,值2 ...};

	int arr[5] = { 10,20,30,40,50};
	int arr2[5] = { 10,20,30 };
	//如果在初始化数据时,没有全部填写完,会用0来填补剩余数据


	for (int i = 0; i < 5; i++)
	{
		//cout << arr[i] << endl;
		cout << arr2[i] << endl;
	}

	system("pause");
	return 0;
}

3.数据类型 数组名[ ] = {值1,值2 ...};

#include <iostream>
using namespace std;

int main()
{
	//数组

	//3. 数据类型 数组名[ ] = {值1,值2 ...};

	int arr[] = { 10,20,30,40,50};
	int arr2[] = { 10,20,30 };

	for (int i = 0; i < 3; i++)
	{
		//cout << arr[i] << endl;
		cout << arr2[i] << endl;
	}

	system("pause");
	return 0;
}

注意:

1.数组的命名不要和变量重名

2.数组的下标是从0开始索引的

5.2.2 一维数组数组名

一维数组名称的用途:

1.可以统计整个数组在内存中的长度

2.可以获取数组在内存中的首地址

#include <iostream>
using namespace std;

int main()
{
	int arr[5] = { 1,2,3,4,5 };
	cout << "整个数组所占的内存空间为"<<sizeof(arr) << endl;//统计整个数组所占内存空间
	cout << "每个元素所占的内存空间为:"<<sizeof(arr[0]) << endl;//统计某个元素所占内存空间
	cout << "数组中元素的个数为:"<< sizeof(arr) / sizeof(arr[0]) << endl;//统计数组的元素个数

	//通过数组名查看数组的首地址
	cout << "数组首地址为:" << arr << endl;

	system("pause");
	return 0;
}

练习实例:冒泡排序

#include <iostream>
using namespace std;

int main()
{
	int temp;
	int arr[9] = { 4,2,8,0,5,7,1,3,9 };
	//排序前
	cout << "排序前:" << endl;
	for (int k = 0; k < 9; k++) {
		cout << arr[k]<<"  ";
	}
	//开始冒泡排序
	//总排序轮数为 元素个数 - 1;
	for (int i = 0; i < 9 - 1; i++) 
	{
		//内层循环对比次数 = 元素个数 - 当前排序轮数 - 1;
		for (int j = 0; j < 9 - i - 1; j++) 
		{
			//如果第一个数字,比第二个数字大,交换两个数字
			if (arr[j] > arr[j + 1]) {
			 	temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	//排序后
	cout << endl << "排序后:" << endl;
	for (int k = 0; k < 9; k++) {
		cout << arr[k] << "  ";
	}

	system("pause");
	return 0;
}

5.3 二维数组

5.3.1 二维数组的定义方式

#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;
	
	//外层循环打印行数,内层循环打印列数
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << endl;
		}
	}


	system("pause");
	return 0;
}


#include <iostream>
using namespace std;

int main()
{

	//2.数据类型 数组名[ 行数 ][ 列数 ] = {{数据1,数据2},{数据3,数据4}};
	int arr2[2][3] =
	{
		{1,2,3},
		{4,5,6}
	};
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr2[i][j] <<" ";
		}
		cout << endl;
	}

	system("pause");
	return 0;
}


#include <iostream>
using namespace std;

int main()
{

	//4.数据类型 数组名[ ][ 列数 ] = {数据1,数据2,数据3,数据4};
	int arr3[][3] = { 1,2,3,4,5,6 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr3[i][j] <<" ";
		}
		cout << endl;
	}

	system("pause");
	return 0;
}


注意:定义二维数组时,如果初始化了数据,可以省去行数,但列数不能省去

5.3.2 二维数组数组名

作用:

1.查看二维数组所占内存空间大小

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;

	//2.查看二维数组的首地址
	cout << "二维数组首地址为:"<<(int)arr << endl;//(int)将16进制数据转换成10进制数据
	cout << "二维数组第一行首地址:" << (int)arr[0] << endl;
	cout << "二维数组第二行首地址为:" << (int)arr[1] << endl;
	
	cout << "二维数组第一个元素的首地址:" << (int)&arr << endl;
	cout << "二维数组第二个元素的首地址:" << (int)&arr[0][1] << endl;

	system("pause");
	return 0;
}


5.3.3 二维数组应用案例

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

int main()
{
	//1.创建二维数组,3行3列
	//2.统计考试成绩,让每行的3列相加,统计出总和
	//创建二维数组
	int arr[3][3] =
	{
		{100,100,100},
		{90,50,100},
		{60,70,80}
	};
	//统计每个人的总和分数
	//给出每个人的名字数组,
	string names[3] = { "张三","李四","王五" };//使用string函数时需要添加<string>头文件

	for (int i = 0; i < 3; i++)
	{
		int sum = 0;
		for (int j = 0; j < 3; j++)
		{
			sum = sum + arr[i][j];
		}
		cout <<names[i]<<"的总分为:"<< sum << endl;
	}


	system("pause");
	return 0;
}


6. 函数

6.1? 函数概述

作用:将一组经常使用的代码进行封装,减少重复代码

一个较大的程序,一般分为若干个程序块,每个程序块实现特定的功能

6.2 函数定义

函数定义一般有5个主要步骤:

1.返回值类型

2.函数名

3.参数表列

4.函数体语句

5.return表达式

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

//加法函数,实现两个整形相加,并且将相加的结果进行返回
int add(int num1, int num2)
{
	int sum = num1 + num2;
	return sum;
}
int main()
{
	


	system("pause");
	return 0;
}


?6.3 函数的调用

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

//加法函数,实现两个整形相加,并且将相加的结果进行返回
//函数定义的时候,num1和num2并没有真实数据
//它们只是一个形式上的参数,简称形参
int add(int num1, int num2)
{
	int sum = num1 + num2;
	return sum;
}
int main()
{
	//main函数中调用add函数
	int a = 20;
	int b = 20;

	//函数调用语法:函数名称(参数)
	int c = add(a, b);
	//a和b称为实际参数,简称实参
	//当调用函数的时候,实际参数的值会传递给形参

	cout << c << endl;

	system("pause");
	return 0;
}


6.4 值传递

值传递时,函数的形参发生改变,并不会影响实参

#include <iostream>
using namespace std;

//值传递
//定义函数,实现两个数字进行交换的函数

//如果函数不需要返回值,声明的时候可以写void
void swap(int num1, int num2)
{
	cout << "交换前:" << endl;
	cout << "num1 = " << num1 << endl;
	cout << "num2 = " << num2 << endl;
	
	int temp = num1;
	num1 = num2;
	num2 = temp;
	cout << "交换后:" << endl;
	cout << "num1 = " << num1 << endl;
	cout << "num2 = " << num2 << endl;
	return;//返回值不需要的时候可以不写return或写return;
}

int main()
{
	int a = 10;
	int b = 20;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	//值传递时,函数的形参发生改变,并不会影响实参
	swap(a, b);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	system("pause");
	return 0;
}

6.5 函数的常见样式

常见的函数样式:

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:21:50  更:2021-09-27 14:23:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:41:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码