2021-01-23 O terceiro dia de entrada e aprendizagem de C ++


Um, a matriz

A chamada matriz é uma coleção na qual os elementos de dados do mesmo tipo são armazenados

Características:

  • Cada elemento de dados na matriz éO mesmo tipo de dados

  • A matriz é composta porLocalização de memória contíguaconsiste em

  • Podemos passarSubscritoPara acessar os elementos da matriz, o subscrito do elemento da matriz começa em 0

1. Matriz unidimensional

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

Finalidade do nome da matriz unidimensional:

  • Conte o comprimento de todo o array na memória: sizeof (nome do array)

  • Obtenha o primeiro endereço do array na memória: cout << nome do array << endl;

Exemplo: Veja o comprimento da matriz e o primeiro endereço da 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 saída
Insira a descrição da imagem aqui

Tipo de bolha

O algoritmo de classificação mais comumente usado para classificar os elementos na matriz
prática:

  1. Compare os elementos adjacentes, se o primeiro for maior que o segundo, troque-os dois

  2. Faça o mesmo trabalho para cada par de elementos adjacentes e encontre o primeiro valor máximo após a execução

  3. Repita as etapas acima, o número de comparações -1 de cada vez, até que nenhuma comparação seja necessária

O número total de rodadas de classificação = o número de elementos - 1 O número de
comparações em cada rodada = o número de elementos - o número de rodadas de classificação - 1

Análise de caso
Dado um conjunto de dados {4,2,8,0,5,7,1,3,9}, classifique-os em ordem crescente de acordo com o método de classificação por bolha
Insira a descrição da imagem aqui

Exemplo

#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 saída
Insira a descrição da imagem aqui

(2) Matriz bidimensional

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

O objetivo do nome da matriz bidimensional:

  • Veja a memória ocupada por uma matriz bidimensional

  • Obtenha o primeiro endereço de uma matriz bidimensional

Exemplo

#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 saída
Insira a descrição da imagem aqui

Em segundo lugar, a função

Encapsular uma parte do código usado com frequência para reduzir o código repetitivo
Um programa maior é geralmente dividido em vários blocos de programa, e cada módulo realiza uma função específica

1. A definição da função:

  1. Tipo de valor de retorno

  2. Nome da função

  3. lista de parâmetros

  4. Declaração do corpo da função

  5. expressão de retorno

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

Insira a descrição da imagem aqui

2. Chamada de função

函数名(参数);

Os parênteses na definição da função são chamados de parâmetros formais e os parâmetros passados ​​quando a função é chamada são chamados de parâmetros reais.

Exemplo

#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 saída
Insira a descrição da imagem aqui

3. Transferência de valor

A chamada transferência de valor é que o parâmetro real passa o valor para o parâmetro formal quando a função é chamada

Quando o valor é passado, se o parâmetro formal ocorrer, não afetará o parâmetro real

Se a função não precisa retornar um valor, você pode escrever void ao declará-lo

Exemplo

#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 saída
Insira a descrição da imagem aqui

4. Estilos comuns de funções

  1. Sem participação, sem retorno

  2. Participação sem retorno

  3. Retorno sem participação

  4. Participe e volte

Exemplo

#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 saída
Insira a descrição da imagem aqui

5. Declaração de função

Diga ao compilador o nome da função e como chamá-la, o corpo real da função pode ser definido separadamente

A função pode ser declarada várias vezes, mas só pode ser definida uma vez

Exemplo

#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 saída
Insira a descrição da imagem aqui

6. Gravação de funções de subarquivos

Geralmente, há 4 etapas para escrever um arquivo de função:

  1. Crie um arquivo de cabeçalho com a extensão .h

  2. Crie um arquivo de origem com o sufixo .cpp

  3. Escreva a declaração da função no arquivo de cabeçalho

  4. Escreva a definição da função no arquivo de origem

Arquivo de cabeçalho.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;
}

O programa principal chama .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] O curso de aprendizagem é - Dark Horse Program C ++ Tutorial

Acho que você gosta

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