2021-01-23 El tercer día de registro y aprendizaje de C ++


Uno, la matriz

La llamada matriz es una colección en la que se almacenan elementos de datos del mismo tipo

Características:

  • Cada elemento de datos en la matriz esEl mismo tipo de datos

  • La matriz se compone deUbicación de memoria contiguaconsiste en

  • Podemos pasarSubíndicePara acceder a los elementos de la matriz, el subíndice del elemento de la matriz comienza desde 0

1. Matriz unidimensional

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

Propósito del nombre de matriz unidimensional:

  • Cuente la longitud de toda la matriz en la memoria: sizeof (nombre de la matriz)

  • Obtenga la primera dirección del arreglo en la memoria: cout << nombre del arreglo << endl;

Ejemplo: ver la longitud de la matriz y la primera dirección de la matriz

#include<iostream>
using namespace std;

int main()
{
    
    
	int arr[] = {
    
     1,2,3,4,5,6 };
	cout << "整个数组所占内存空间:" << sizeof(arr) << endl;
	cout << "每个元素占用内存空间: " << sizeof(arr[0]) << endl;
	cout << "数组中元素个数:" << sizeof(arr) / sizeof(arr[0]) << endl;
	cout << "数组在内存中的首地址:" << arr << endl;
	cout << "数组中第一个元素地址:" << &arr[0] << endl;
	cout << "数组中第二个元素地址:" << &arr[1] << endl;
	



	system("pause");
	return 0;

}

Resultado de salida
Inserte la descripción de la imagen aquí

Ordenamiento de burbuja

El algoritmo de ordenación más utilizado para ordenar los elementos de la matriz.
práctica:

  1. Compare los elementos adyacentes, si el primero es mayor que el segundo, cámbielos por dos

  2. Haga el mismo trabajo para cada par de elementos adyacentes y encuentre el primer valor máximo después de la ejecución

  3. Repita los pasos anteriores, el número de comparaciones -1 cada vez, hasta que no se necesite comparación

El número total de rondas de clasificación = el número de elementos-1 El número de
comparaciones en cada ronda = el número de elementos-el número de rondas de clasificación-1

Análisis de casos
Dado un conjunto de datos {4,2,8,0,5,7,1,3,9}, ordénelos en orden ascendente según el método de clasificación de burbujas
Inserte la descripción de la imagen aquí

Ejemplo

#include<iostream>
using namespace std;

//利用冒泡排序进行升序排列
int main()
{
    
    
	int arr[] = {
    
     4,2,8,0,5,7,1,3,9 }, count, i, j, num;
	count = sizeof(arr) / sizeof(arr[0]);
	cout << "给出一组数:" << arr[0];
	for (i = 1; i < count; i++)
	{
    
    
		cout << ","<< arr[i];
	}
	cout << "\n对这组数进行升序排列" << endl;
	
	for (i = 0; i < count-1; i++)
	{
    
    
		for (j = 0; j < count-i-1; j++)
		{
    
    
			if (arr[j] > arr[j + 1])
			{
    
    
				num = arr[j+1];
				arr[j+1] = arr[j];
				arr[j] = num;
			}
		}
	}

	cout << "利用冒泡排序进行升序排列后:" << arr[0];
	for (i = 1; i < count; i++)
	{
    
    
		cout << "," << arr[i];
	}
	cout << "\n";
	system("pause");
	return 0;

}

Resultado de salida
Inserte la descripción de la imagen aquí

(2) Matriz bidimensional

1.数据类型 数组名[ 行数 ] [ 列数 ]2.数据类型 数组名[ 行数 ] [ 列数 ] = {
    
     {
    
    数据1,数据2}{
    
    数据3,数据4} }3.数据类型 数组名[ 行数 ] [ 列数 ] = {
    
    数据1,数据2,数据3,数据4}4.数据类型 数组名[  ] [ 列数 ] = {
    
    数据1,数据2,数据3,数据4}

El propósito del nombre de la matriz bidimensional:

  • Ver la memoria ocupada por una matriz bidimensional

  • Obtenga la primera dirección de una matriz bidimensional

Ejemplo

#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 << "二维数组首地址为:" << arr << endl;
	cout << "二维数组第一行首地址为" << arr[0] << endl;
	cout << "二维数组第一个元素首地址为:" << &arr[0][0] << endl;


	system("pause");
	return 0;

}

Resultado de salida
Inserte la descripción de la imagen aquí

En segundo lugar, la función

Encapsular un fragmento de código de uso frecuente para reducir el código repetitivo
Un programa más grande generalmente se divide en varios bloques de programa, y ​​cada módulo realiza una función específica

1. La definición de la función:

  1. Tipo de valor devuelto

  2. Nombre de la función

  3. lista de parámetros

  4. Declaración del cuerpo de la función

  5. expresión de retorno

返回值类型  函数名(参数列表)
{
    
    
	函数体语句
		
	return表达式	
}

Inserte la descripción de la imagen aquí

2. Llamada a función

函数名(参数);

Los paréntesis en la definición de la función se denominan parámetros formales y los parámetros pasados ​​cuando se llama a la función se denominan parámetros reales.

Ejemplo

#include<iostream>
using namespace std;

//求和
int add(int num1, int num2)
{
    
    
	int sum = num1 + num2;
	return sum;
}
int main()
{
    
    
	int a = 10;
	int b = 20;
	int c = add(a, b);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

	system("pause");
	return 0;

}

Resultado de salida
Inserte la descripción de la imagen aquí

3. Transferencia de valor

La llamada transferencia de valor es que el parámetro real pasa el valor al parámetro formal cuando se llama a la función

Cuando se pasa el valor, si se produce el parámetro formal, no afectará al parámetro real

Si la función no necesita devolver un valor, puede escribir vacío al declararlo

Ejemplo

#include<iostream>
using namespace std;

//交换两值
void swap(int num1, int num2)
{
    
    
	cout << "交换前:" << num1 << " " << num2 << endl;
	int temp = num1;
	num1 = num2;
	num2 = temp;
	cout << "交换后:" << num1 << " " << num2 << endl;
}

int main()
{
    
    
	int a = 10;
	int b = 20;
	cout << "调用函数前:a = " << a << " b = " << b << endl;
	swap(a, b);
	cout << "调用函数后:a = " << a << " b = " << b << endl;

	system("pause");
	return 0;
}

Resultado de salida
Inserte la descripción de la imagen aquí

4. Estilos comunes de funciones

  1. Sin participación, sin devolución

  2. Participación sin devolución

  3. Regreso sin participación

  4. Participa y vuelve

Ejemplo

#include<iostream>
using namespace std;

//1、无参无返
void test01()
{
    
    
	cout << "this is test01 " << endl;
}

//2、有参无返
void test02(int num)
{
    
    
	cout << "this is test02 X = " << num << endl;
}

//3、无参有返
int test03()
{
    
    
	int flag = 1;
	return flag;
}

//4、有参有返
int test04(int num1, int num2)
{
    
    
	int sum = num1 + num2;
	return sum;
}

int main()
{
    
    
	test01();
	int a = 10;
	test02(a);
	int b = test03();
	cout << "this is test03 b = " << b << endl;
	int c = test04(a, b);
	cout << "this is test04 c = " << c << endl;

	system("pause");
	return 0;

}

Resultado de salida
Inserte la descripción de la imagen aquí

5. Declaración de función

Dígale al compilador el nombre de la función y cómo llamar a la función, el cuerpo real de la función se puede definir por separado

La función se puede declarar varias veces, pero la función solo se puede definir una vez

Ejemplo

#include<iostream>
using namespace std;

int add(int num1, int num2);
int main()
{
    
    
	int a = 10;
	int b = 20;
	int c = add(a, b);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

	system("pause");
	return 0;

}

int add(int num1, int num2)
{
    
    
	int sum = num1 + num2;
	return sum;
}

Resultado de salida
Inserte la descripción de la imagen aquí

6. Escritura de funciones en subarchivos

Generalmente hay 4 pasos para escribir un archivo de función:

  1. Cree un archivo de encabezado con la extensión .h

  2. Cree un archivo fuente con un sufijo de .cpp

  3. Escriba la declaración de la función en el archivo de encabezado

  4. Escribe la definición de la función en el archivo fuente.

Archivo de encabezado.h

#include<iostream>
using namespace std;

void swap(int a, int b);

Function.cpp

#include"swap.h"

void swap(int a, int b)
{
    
    
	int temp = a;
	a = b;
	b = temp;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}

El programa principal llama .cpp

#include"swap.h"

void swap(int a, int b)
{
    
    
	int temp = a;
	a = b;
	b = temp;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}

[Nota] El curso de aprendizaje es-Tutorial de C ++ del Programa Dark Horse

Supongo que te gusta

Origin blog.csdn.net/qq_42616280/article/details/113029537
Recomendado
Clasificación