Biblioteca de funciones comunes



Funciones matemáticas de uso común

#include <math.h>
fabs(double x) return double;取绝对值;
floor(double x) return double;向下取整;
ceil(double x) return double;向上取整;
pow(double r, double p) return double; 求幂;r的p次方
sqrt(double x) return double; 根号;
log(double x) return double;
sin(double x) cos(double x) tan(double x) return double;
asin(double x) acos(double x) atan(double x) return double;
round(double x) return double; 对x进行四舍五入;

Uso de interruptor

switch(x)
{
    
    
	case 1: 
		...
		break;
	case 2:
		...
		break;
	default:
		...
}

memset y relleno, función string.h, función de algoritmo

#include <string.h>
memset(arr, 0, sizeof(arr));
strlen(s); //字符串s
strcmp(a, b); //字符串a,b,
//if(a==b) return 0;
//if(a>b) return 正整数;
//if(a<b) return 负整数;
strcpy(a, b); //b复制给a;
strcat(a,b) //a后接b;
#include <stdio.h>
scanf("%d", &n); == scanf(screen, "%d", &n); //screen表示屏幕;
printf("%d", n); == printf(screen, "%d", n); //screen表示屏幕;
sscanf() == string + scanf;
sprintf() == string + printf;
sscanf(str, "%d", &n); //把字符串str中的内容以"%d"的格式写到n中(从左到右);
sprintf(str, "%d", n); //把n以%d的格式写到字符串str中(从左到右)

memset solo se puede usar para asignar un valor de 0 o -1; debido a que memset se asigna por byte;
use la función de relleno para asignar otros valores,

#include <algorithm>
fill(arr, arr+n, 233)

Toma una matriz como parámetro de función

Cuando se usa una matriz como parámetro, la primera dimensión de la matriz en el parámetro no necesita completar la longitud (si es una matriz bidimensional, entonces la segunda dimensión debe completar la longitud), y solo el nombre de la matriz es obligatorio en la llamada real.
Cuando se utiliza una matriz como parámetro, la modificación del elemento de matriz en la función es equivalente a la modificación del elemento de matriz original (esto es diferente de las variables locales ordinarias)

void test(int a[], int b[][5])
{
    
    
	...
}

Constructor de estructuras

El llamado constructor es una función que se utiliza para inicializar la estructura, definida directamente en la estructura;
las características del constructor: no necesita escribir el tipo de retorno, y el nombre de la función es el mismo que el nombre de la estructura.
Para una estructura definida comúnmente, se genera un constructor predeterminado (pero no visible) en el interior. "studentInfo () {}" es el constructor generado por defecto. Puede ver que el nombre de la función de este constructor es el mismo que el nombre del tipo de estructura y no tiene tipo de retorno.

struct stuentInfo
{
    
    
	int id;
	char gender;
	studentInfo(){
    
    }
};

struct stuentInfo
{
    
    
	int id;
	char gender;
	studentInfo(int _id, char _gender):id(_id), gender(_gender){
    
    }
};
studentInfostu = studentInfo(10086, 'M');
char str[100];
cin.getline(str, 100); //输入一行;
string str;
getline(cin, str);

Comparación de números de punto flotante

const double eps = 1e-8;
#define Equ(a, b) (fabs((a)-(b))) < (eps) //==等于
#define More(a, b) (((a)-(b)) > (eps)) //>大于
#define Less(a, b)  (((a)-(b)) < (-eps)) //<小于
#define MoreEqu(a, b) (((a)-(b)) > (-eps)) //>=大于等于
#define LessEqu(a, b) (((a)-(b)) < (eps)) //<=小于等于
const double Pi = acos(-1.0)

Para un sistema OJ general, el número de operaciones que se pueden realizar en un segundo es de aproximadamente 10 ^ 7 ~ 10 ^ 8,

while(scanf("%d", &n) != EOF)
{
    
    
	...
}

Exponenciación rápida

typedef long long LL;
LL pow(LL a, LL b, LL m) // 求 a^b % m;
{
    
    
    LL ans = 1;
	while(b > 0)
	{
    
    
		if(b % 2 == 1)
		{
    
    
			ans = ans * a % m;
		}
        a = a * a % m;
		b = b / 2;
	}
	return ans;
}

Máximo común divisor

int  gcd(int a, int b)
{
    
    
	if(b==0) return a;
	else return gcd(b, a % b);
}

Supongo que te gusta

Origin blog.csdn.net/weixin_42137874/article/details/113607760
Recomendado
Clasificación