最大公约数和最小公倍数
//最大公约数
int gcd(int p, int q)
{
int r;
while (q > 0)
{
r = p % q;
p = q;
q = r;
}
return p;
}
//最小公倍数
int lcm(int m, int n)
{
int gcd();
return m * n / gcd(m, n);
}
极坐标转直角坐标
void tr(double r, double t, double * xx, double * yy)
{
*xx = r * cos(t); //角度采弧度制
*yy = r * sin(t);
}
排序
数字排序
void sort(int a[], int n)
{
int j, i, w;
for (i = n - 2; i >= 0; --i)
{
for (j = 0; j <= i; ++j)
{
if (a[j] > a[j + 1])
{
w = a[j];
a[j] = a[j + 1];
a[j + 1] = w;
}
}
}
}
文字排序
#include<string.h> //字符串相关函数所需
void sort(char a[][50], int n)
{
int i, j, k;
char w[50];
for (k = n - 2; k >= 0; --k)
{
for (j = 0; j <= k; ++j)
{
if (strcmp(a[j], a[j + 1]) > 0)
{
strcpy(w, a[j]);
strcpy(a[j], a[j + 1]);
strcpy(a[j + 1], w);
}
}
}
局部静态变量
在函数中,用static
修饰变量,则该变量只会被初始化一次,经过函数处理后的新值会被保留,而再次调用会以被保留的值开始处理,非static
则调用一次初始化一次
#include<stdio.h>
void my_function()
{
int x = 1;
static int y = 1;
printf("x = %d, y = %d\n", x, y);
x = x * 5;
y = y * 2;
}
int main()
{
my_function();
my_function();
my_function();
return 0;
}
x = 1, y = 1
x = 1, y = 2
x = 1, y = 4