C码字练习.幕间.几个函数 - 北方连萌

C码字练习.幕间.几个函数

最大公约数和最小公倍数

//最大公约数
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

添加新评论

电子邮件地址不会被公开,评论内容可能需要管理员审核后显示。