Notas de estudio de C++ (2): estructura de flujo del programa, matriz, función

Tabla de contenido

1. Seleccionar estructura:

1. La sentencia if:

2. Operador ternario:

 3. Declaración de cambio:

En segundo lugar, la estructura del ciclo:

1. declaración de bucle while

2. instrucción de bucle do...while

3. declaración de bucle for

 3. Matriz:

1. Matriz unidimensional:

2. Clasificación de burbujas:

2. Matriz bidimensional:

4. Función:

1. Definición de función:

2. Llamada de función

3. Transferencia de valor y transferencia de dirección:

5. Declaración de función

6. Función de escritura de archivos:


1. Seleccionar estructura:

1. La sentencia if:

Función: Ejecutar la sentencia que cumple la condición. Dividido en las siguientes tres formas:

  • Formato de una sola línea si declaración

  • Formato multilínea si declaración

  • instrucción if multicondicional

int main() {

	//选择结构-单行if语句
	int score = 200;

	//if语句
	//注意事项,在if判断语句后面,不要加分号
	if (score > 600)
	{
		cout << "我考上了一本大学!!!" << endl;
	}
    
    //多行格式if语句
	if (score > 600)
	{
		cout << "我考上了一本大学" << endl;
	}
	else
	{
		cout << "我未考上一本大学" << endl;
	}

    //多条件if语句:
    if (score > 600)
	{
		cout << "我考上了一本大学" << endl;
	}
	else if (score > 500)
	{
		cout << "我考上了二本大学" << endl;
	}
	else if (score > 400)
	{
		cout << "我考上了三本大学" << endl;
	}
	else
	{
		cout << "我未考上本科" << endl;
	}

	system("pause");

	return 0;
}

Al mismo tiempo, C++ también admite el cuerpo if vacío, pero se requiere un punto y coma;

int main()
{
	if (1 > 0);

	system("pause");
	return 0;
}

2. Operador ternario:

Función: Realizar juicio simple a través del operador ternario

gramática:表达式1 ? 表达式2 :表达式3

int main() {

	int a = 10;
	int b = 20;
	int c = 0;

	c = a > b ? a : b;
	cout << "c = " << c << endl;  //20

	//C++中三目运算符返回的是变量,可以继续赋值

	(a > b ? a : b) = 100;

	cout << "a = " << a << endl; //10
	cout << "b = " << b << endl; //100
	cout << "c = " << c << endl; //20

	system("pause");

	return 0;
}

 3. Declaración de cambio:

Función: Ejecutar sentencias de bifurcación multicondicional

gramática:

switch(表达式)

{

	case 结果1:执行语句;break;

	case 结果2:执行语句;break;

	...

	default:执行语句;break;

}

Nota 1: el tipo de expresión en la declaración de cambio solo puede ser un número entero o un carácter

Nota 2: Si no hay interrupción en el caso, el programa continuará ejecutándose hacia abajo

Resumen: en comparación con la instrucción if, al juzgar múltiples condiciones, la estructura del interruptor es clara y la eficiencia de ejecución es alta. La desventaja es que el interruptor no puede juzgar el intervalo

nt main() {

	//请给电影评分 
	//10 ~ 9   经典   
	// 8 ~ 7   非常好
	// 6 ~ 5   一般
	// 5分以下 烂片

	int score = 0;
	cout << "请给电影打分" << endl;
	cin >> score;

	switch (score)
	{
	case 10:
	case 9:
		cout << "经典" << endl;
		break;
	case 8:
		cout << "非常好" << endl;
		break;
	case 7:
	case 6:
		cout << "一般" << endl;
		break;
	default:
		cout << "烂片" << endl;
		break;
	}

	system("pause");

	return 0;
}

En segundo lugar, la estructura del ciclo:

1. declaración de bucle while

Función: satisfacer la condición del bucle, ejecutar la declaración del bucle

gramática:while(循环条件){ 循环语句 }

Explicación: == Siempre que el resultado de la condición del ciclo sea verdadero, ejecute la declaración del ciclo ==

int main() {

	int num = 0;
	while (num < 10)
	{
		cout << "num = " << num << endl;
		num++;
	}
	
	system("pause");

	return 0;
}

2. instrucción de bucle do...while

Función: satisfacer la condición del bucle, ejecutar la declaración del bucle

gramática: do{ 循环语句 } while(循环条件);

Nota: La diferencia con while es que do...while ejecutará primero la instrucción en do una vez, luego juzgará si se cumple la condición del cuerpo del ciclo y luego decidirá si ingresa nuevamente al cuerpo del ciclo, y la instrucción do solo se ejecutará una vez.

int main() {

	int num = 0;

	do
	{
		cout << num << endl;
		num++;

	} while (num < 10);
	
	
	system("pause");

	return 0;
}

3. declaración de bucle for

Función: satisfacer la condición del bucle, ejecutar la declaración del bucle

gramática:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }

Nota: Las expresiones en el ciclo for deben estar separadas por punto y coma.  

int main() {

	for (int i = 0; i < 10; i++)
	{
		cout << i << endl;
	}
	
	system("pause");

	return 0;
}

 3. Matriz:

La llamada matriz es una colección que almacena elementos de datos del mismo tipo

Característica 1: cada elemento de datos en la matriz es del mismo tipo de datos

Característica 2: las matrices se componen de ubicaciones de memoria contiguas

1. Matriz unidimensional:

Tres formas de definir una matriz unidimensional:

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

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

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

int main() {

	//定义方式1
	//数据类型 数组名[元素个数];
	int score[10];

	//利用下标赋值
	score[0] = 100;
	score[1] = 99;
	score[2] = 85;

	//利用下标输出
	cout << score[0] << endl;
	cout << score[1] << endl;
	cout << score[2] << endl;


	//第二种定义方式
	//数据类型 数组名[元素个数] =  {值1,值2 ,值3 ...};
	//如果{}内不足10个数据,剩余数据用0补全
	int score2[10] = { 100, 90,80,70,60,50,40,30,20,10 };
	
	//逐个输出
	//cout << score2[0] << endl;
	//cout << score2[1] << endl;

	//一个一个输出太麻烦,因此可以利用循环进行输出
	for (int i = 0; i < 10; i++)
	{
		cout << score2[i] << endl;
	}

	//定义方式3
	//数据类型 数组名[] =  {值1,值2 ,值3 ...};
	int score3[] = { 100,90,80,70,60,50,40,30,20,10 };

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

	system("pause");

	return 0;
}

Uso de nombres de matriz 1D:

  1. Puede contar la longitud de toda la matriz en la memoria

  2. Puede obtener la primera dirección de la matriz en la memoria

  3. El nombre de la matriz es una constante y no se puede asignar

  4. Imprima el nombre de la matriz directamente, puede ver la primera dirección de la memoria ocupada por la matriz

  5. Realice sizeof en el nombre de la matriz para obtener el tamaño del espacio de memoria ocupado por toda la matriz

int main() {

	//数组名用途
	//1、可以获取整个数组占用内存空间大小
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

	cout << "整个数组所占内存空间为: " << sizeof(arr) << endl;
	cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl;
	cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;

	//2、可以通过数组名获取到数组首地址
	cout << "数组首地址为: " << (int)arr << endl; //也就是arr[0]的地址
	cout << "数组中第一个元素地址为: " << (int)&arr[0] << endl;
	cout << "数组中第二个元素地址为: " << (int)&arr[1] << endl;

	//arr = 100; 错误,数组名是常量,因此不可以赋值


	system("pause");

	return 0;
}

2. Clasificación de burbujas:

Función: el algoritmo de ordenación más utilizado, que ordena los elementos de la matriz

  1. Compara elementos adyacentes. Si el primero es más grande que el segundo, cámbialos a ambos.

  2. Haz lo mismo para cada par de elementos adyacentes y, cuando termines, encuentra el primer valor máximo.

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

int main() {

	int arr[9] = { 4,2,8,0,5,7,1,3,9 };
	int len = sizeof(arr) / sizeof(arr[0]);

	for (int i = 0; i < len - 1; i++)
	{
		for (int j = 0; j < len - 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 < 9; i++)
	{
		cout << arr[i] << endl;
	}

	system("pause");

	return 0;
}

2. Matriz bidimensional:

Cuatro formas de definir una matriz bidimensional:

  1. 数据类型 数组名[ 行数 ][ 列数 ];

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

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

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

Al definir una matriz bidimensional, si los datos se inicializan, se puede omitir el número de filas y se deben borrar las columnas independientemente del método de definición.

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] << " ";
		}
		cout << endl;
	}

	//方式2 
	//数据类型 数组名[行数][列数] = { {数据1,数据2 } ,{数据3,数据4 } };
	int arr2[2][3] =
	{
		{1,2,3},
		{4,5,6}
	};

	//方式3
	//数据类型 数组名[行数][列数] = { 数据1,数据2 ,数据3,数据4  };
	int arr3[2][3] = { 1,2,3,4,5,6 }; 

	//方式4 
	//数据类型 数组名[][列数] = { 数据1,数据2 ,数据3,数据4  };
	int arr4[][3] = { 1,2,3,4,5,6 };
	
	system("pause");

	return 0;
}

nombre de matriz de matriz 2D

  • Ver el espacio de memoria ocupado por una matriz bidimensional

  • Obtenga la primera dirección de la matriz bidimensional

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[1] << endl;

	cout << "二维数组第一个元素地址:" << &arr[0][0] << endl;
	cout << "二维数组第二个元素地址:" << &arr[0][1] << endl;

	system("pause");

	return 0;
}

4. Función:

1. Definición de función:

1. Tipo de valor devuelto: una función puede devolver un valor. en la definición de la función

2. Nombre de la función: asigne un nombre a la función

3. Lista de parámetros: Al usar esta función, los datos pasados ​​en

4. Declaración del cuerpo de la función: el código entre llaves, la declaración que se ejecutará en la función

5. Expresión de retorno: vinculado al tipo de valor de retorno, después de ejecutar la función, se devolverán los datos correspondientes

gramática:

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

}
//函数定义
int add(int num1, int num2)
{
	int sum = num1 + num2;
	return sum;
}

2. Llamada de función

Función: usar la función definida

gramática:函数名(参数)

Ejemplo:

//函数定义
int add(int num1, int num2) //定义中的num1,num2称为形式参数,简称形参
{
	int sum = num1 + num2;
	return sum;
}

int main() {

	int a = 10;
	int b = 10;
	//调用add函数
	int sum = add(a, b);//调用时的a,b称为实际参数,简称实参
	cout << "sum = " << sum << endl;

	system("pause");

	return 0;
}

  3. Transferencia de valor y transferencia de dirección:

1. Transferencia de valor:

  • El llamado paso por valor significa que cuando se llama a la función, el parámetro real pasa el valor al parámetro formal.

  • Al pasar por valor, si se produce el parámetro formal, no afectará al parámetro real

2. Dirección de entrega:

  • El llamado paso de direcciones significa que el parámetro real se pasa al parámetro formal cuando se llama a la función.

  • Cuando se pasa la dirección, si se produce el parámetro formal, el parámetro real también cambiará

#include<iostream>
using namespace std;
#pragma warning(disable:4996)
void swap(int num1, int num2)
{
	num1 = 20;
	num2 = 10;
}
void swap_address(int &num1, int &num2) {
	num1 = 20;
	num2 = 10;
}
int main() {

	int a = 10;
	int b = 20;

	swap(a, b);

	cout << "mian中的 a = " << a << endl; //10
	cout << "mian中的 b = " << b << endl; //20

	swap_address(a, b);

	cout << "mian中的 a = " << a << endl; //20
	cout << "mian中的 b = " << b << endl; //10

	system("pause");

	return 0;
}

4. Estilos comunes de funciones

1. Sin devolución sin participación 2. Sin devolución con participación

3. Vuelta sin participación 3. Vuelta con participación

//函数常见样式
//1、 无参无返
void test01()
{
	//void a = 10; //无类型不可以创建变量,原因无法分配内存
	cout << "this is test01" << endl;
	//test01(); 函数调用
}

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

//3、无参有返
int test03()
{
	cout << "this is test03 " << endl;
	return 10;
}

//4、有参有返
int test04(int a, int b)
{
	cout << "this is test04 " << endl;
	int sum = a + b;
	return sum;
}

5. Declaración de función

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.

  • Una función se puede declarar varias veces , pero una función solo se puede definir una vez

Ejemplo:

//声明可以多次,定义只能一次
//声明
int max(int a, int b);
int max(int a, int b);
//定义
int max(int a, int b)
{
	return a > b ? a : b;
}

int main() {

	int a = 100;
	int b = 200;

	cout << max(a, b) << endl;

	system("pause");

	return 0;
}

6. Función de escritura de archivos:

Función: para que la estructura del código sea más clara, generalmente hay 4 pasos para escribir:

  1. Cree un archivo de encabezado con el sufijo .h

  2. Cree un archivo fuente con el sufijo .cpp

  3. Escribir declaraciones de funciones en archivos de encabezado

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

Tres archivos, el primer archivo .h se usa para declarar la función. El segundo archivo .cpp se usa para definir el cuerpo de la función. Se utiliza el tercer archivo de función principal.

Ejemplo:

//swap.h文件
#include<iostream>
using namespace std;

//实现两个数字交换的函数声明
void swap(int a, int b);
//swap.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;
}
//main函数文件
#include "swap.h"
int main() {

	int a = 100;
	int b = 200;
	swap(a, b);

	system("pause");

	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_60414376/article/details/126823191
Recomendado
Clasificación