C/C++教程

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 函数的常见样式

常见的函数样式:

 

这篇关于c++程序设计视频学习(第六天)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!