• ACM实用C语言函数


    函数名: abs 功  能: 求整数的绝对值
    用  法: int abs(int i);
    程序例:
    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
      int number = -1234;
    
      printf("number: %d  absolute value: %d/n", number, abs(number));
      return 0;
    }
    函数名: atof
    功  能: 把字符串转换成浮点数
    用  法: double atof(const char *nptr);
    程序例:
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(void)
    {
       float f;
       char *str = "12345.67";
    
       f = atof(str);
       printf("string = %s float = %f/n", str, f);
       return 0;
    }
    
    
    
    函数名: atoi
    功  能: 把字符串转换成长整型数
    用  法: int atoi(const char *nptr);
    程序例:
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(void)
    {
       int n;
       char *str = "12345.67";
    
       n = atoi(str);
       printf("string = %s integer = %d/n", str, n);
       return 0;
    }
    
    
    
    函数名: atol
    功  能: 把字符串转换成长整型数
    用  法: long atol(const char *nptr);
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(void)
    {
       long l;
       char *str = "98765432";
    
       l = atol(lstr);
       printf("string = %s integer = %ld/n", str, l);
       return(0);
    }
    
    函数名: bsearch
    功  能: 二分法搜索
    用  法: void *bsearch(const void *key, const void *base, size_t *nelem,  size_t width, int(*fcmp)(const void *, const *));
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    
    #define NELEMS(arr) (sizeof(arr) / sizeof(arr[0]))
    
    int numarray[] = {123, 145, 512, 627, 800, 933};
    
    int numeric (const int *p1, const int *p2)
    {
       return(*p1 - *p2);
    }
    
    int lookup(int key)
    {
       int *itemptr;
    
       /* The cast of (int(*)(const void *,const void*))
          is needed to avoid a type mismatch error at
          compile time */
       itemptr = bsearch (&key, numarray, NELEMS(numarray),
          sizeof(int), (int(*)(const void *,const void *))numeric);
       return (itemptr != NULL);
    }
    
    int main(void)
    {
       if (lookup(512))
          printf("512 is in the table./n");
       else
          printf("512 isn't in the table./n");
    
       return 0;
    }
    函数名: ceil
    功  能: 向上舍入
    用  法: double ceil(double x);
    程序例:
    
    #include <math.h>
    #include <stdio.h>
    
    int main(void)
    {
       double number = 123.54;
       double down, up;
    
       down = floor(number);
       up = ceil(number);
    
       printf("original number     %5.2lf/n", number);
       printf("number rounded down %5.2lf/n", down);
       printf("number rounded up   %5.2lf/n", up);
    
       return 0;
    }
    
    
    函数名: div 功  能: 将两个整数相除, 返回商和余数
    用  法: div_t (int number, int denom);
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    
    div_t x;
    
    int main(void)
    {
       x = div(10,3);
       printf("10 div 3 = %d remainder %d/n", x.quot, x.rem);
    
       return 0;
    }
    函数名: ecvt
    功  能: 把一个浮点数转换为字符串
    用  法: char ecvt(double value, int ndigit, int *decpt, int *sign);
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    
    int main(void)
    {
       char *string;
       double value;
       int dec, sign;
       int ndig = 10;
    
       clrscr();
       value = 9.876;
       string = ecvt(value, ndig, &dec, &sign);
       printf("string = %s      dec = %d /
       sign = %d/n", string, dec, sign);
    
       value = -123.45;
       ndig= 15;
       string = ecvt(value,ndig,&dec,&sign);
       printf("string = %s dec = %d sign = %d/n",
       string, dec, sign);
    
    
       value = 0.6789e5; /* scientific
       notation */
       ndig = 5;
       string = ecvt(value,ndig,&dec,&sign);
       printf("string = %s           dec = %d/
       sign = %d/n", string, dec, sign);
    
       return 0;
    }
    
    函数名: exp 功  能: 指数函数
    用  法: double exp(double x);
    程序例:
    
    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
       double result;
       double x = 4.0;
    
       result = exp(x);
       printf("'e' raised to the power /
       of %lf (e ^ %lf) = %lf/n",
       x, x, result);
    
       return 0;
    }
    
    函数名: fabs
    功  能: 返回浮点数的绝对值
    用  法: double fabs(double x);
    程序例:
    
    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
       float  number = -1234.0;
    
       printf("number: %f  absolute value: %f/n",
       number, fabs(number));
       return 0;
    }
    
    函数名: fcvt
    功  能: 把一个浮点数转换为字符串
    用  法: char *fcvt(double value, int ndigit, int *decpt, int *sign);
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    
    int main(void)
    {
       char *string;
       double value;
       int dec, sign;
       int ndig = 10;
    
       clrscr();
       value = 9.876;
       string = ecvt(value, ndig, &dec, &sign);
       printf("string = %s      dec = %d /
              sign = %d/n", string, dec, sign);
    
       value = -123.45;
       ndig= 15;
       string = ecvt(value,ndig,&dec,&sign);
       printf("string = %s dec = %d sign = %d/n",
              string, dec, sign);
    
    
       value = 0.6789e5; /* scientific
                            notation */
       ndig = 5;
       string = ecvt(value,ndig,&dec,&sign);
       printf("string = %s           dec = %d/
              sign = %d/n", string, dec, sign);
    
       return 0;
    }
    
    函数名: floor
    功  能: 向下舍入
    用  法: double floor(double x);
    程序例:
    
    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
       double number = 123.54;
       double down, up;
    
       down = floor(number);
       up = ceil(number);
    
       printf("original number     %10.2lf/n",
              number);
       printf("number rounded down %10.2lf/n",
              down);
       printf("number rounded up   %10.2lf/n",
              up);
    
       return 0;
    }
    
    函数名: fmod
    功  能: 计算x对y的模, 即x/y的余数
    用  法: double fmod(double x, double y);
    程序例:
    
    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
       double x = 5.0, y = 2.0;
       double result;
    
       result = fmod(x,y);
       printf("The remainder of (%lf / %lf) is /
              %lf/n", x, y, result);
       return 0;
    }
    函数名: gcvt
    功  能: 把浮点数转换成字符串
    用  法: char *gcvt(double value, int ndigit, char *buf);
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(void)
    {
       char str[25];
       double num;
       int sig = 5; /* significant digits */
    
       /* a regular number */
       num = 9.876;
       gcvt(num, sig, str);
       printf("string = %s/n", str);
    
       /* a negative number */
       num = -123.4567;
       gcvt(num, sig, str);
       printf("string = %s/n", str);
    
       /* scientific notation */
       num = 0.678e5;
       gcvt(num, sig, str);
       printf("string = %s/n", str);
    
       return(0);
    }
    函数名: itoa
    功  能: 把一整数转换为字符串
    用  法: char *itoa(int value, char *string, int radix);
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(void)
    {
       int number = 12345;
       char string[25];
    
       itoa(number, string, 10);
       printf("integer = %d string = %s/n", number, string);
       return 0;
    }
    
    函数名: labs
    功  能: 取长整型绝对值
    用  法: long labs(long n);
    程序例:
    
    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
       long result;
       long x = -12345678L;
    
       result= labs(x);
       printf("number: %ld abs value: %ld/n",
          x, result);
    
       return 0;
    }
    
    
    
    
    函数名: ldexp
    功  能: 计算value*2的幂
    用  法: double ldexp(double value, int exp);
    程序例:
    
    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
       double value;
       double x = 2;
    
       /* ldexp raises 2 by a power of 3
          then multiplies the result by 2   */
       value = ldexp(x,3);
       printf("The ldexp value is: %lf/n",
          value);
    
       return 0;
    }
    
    
    
    函数名: ldiv
    功  能: 两个长整型数相除, 返回商和余数
    用  法: ldiv_t ldiv(long lnumer, long ldenom);
    程序例:
    
    /* ldiv example */
    
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(void)
    {
       ldiv_t lx;
    
       lx = ldiv(100000L, 30000L);
       printf("100000 div 30000 = %ld remainder %ld/n", lx.quot, lx.rem);
       return 0;
    }
    
    
    
    
    函数名: lfind
    功  能: 执行线性搜索
    用  法: void *lfind(void *key, void *base, int *nelem, int width,
          int (*fcmp)());
    程序例:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int compare(int *x, int *y)
    {
       return( *x - *y );
    }
    
    int main(void)
    {
       int array[5] = {35, 87, 46, 99, 12};
       size_t nelem = 5;
       int key;
       int *result;
    
       key = 99;
       result = lfind(&key, array, &nelem,
            sizeof(int), (int(*)(const void *,const void *))compare);
       if (result)
          printf("Number %d found/n",key);
       else
          printf("Number %d not found/n",key);
    
       return 0;
    }
    
    函数名: log 功  能: 对数函数ln(x)
    用  法: double log(double x);
    程序例:
    
    #include <math.h>
    #include <stdio.h>
    
    int main(void)
    {
       double result;
       double x = 8.6872;
    
       result = log(x);
       printf("The natural log of %lf is %lf/n", x, result);
    
       return 0;
    }
    
    
    
    函数名: log10
    功  能: 对数函数log
    用  法: double log10(double x);
    程序例:
    
    #include <math.h>
    #include <stdio.h>
    
    int main(void)
    {
       double result;
       double x = 800.6872;
    
       result = log10(x);
       printf("The common log of %lf is %lf/n", x, result);
    
       return 0;
    }
    函数名: lsearch
    功  能: 线性搜索 用 法: void *lsearch(const void *key, void *base, size_t *nelem,
           size_t width, int (*fcmp)(const void *, const void *));
    程序例:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int compare(int *x, int *y)
    {
       return( *x - *y );
    }
    
    int main(void)
    {
       int array[5] = {35, 87, 46, 99, 12};
       size_t nelem = 5;
       int key;
       int *result;
    
       key = 99;
       result = lfind(&key, array, &nelem,
                   sizeof(int), (int(*)(const void *,const void *))compare);
       if (result)
          printf("Number %d found/n",key);
       else
          printf("Number %d not found/n",key);
    
       return 0;
    }
    
    函数名: memcpy
    功  能: 从源source中拷贝n个字节到目标destin中
    用  法: void *memcpy(void *destin, void *source, unsigned n);
    程序例:
    
    #include <stdio.h>
    #include <string.h>
    int main(void)
    {
       char src[] = "******************************";
       char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
       char *ptr;
       printf("destination before memcpy: %s/n", dest);
       ptr = memcpy(dest, src, strlen(src));
       if (ptr)
          printf("destination after memcpy:  %s/n", dest);
       else
          printf("memcpy failed/n");
       return 0;
    }
    函数名: memset
    功  能: 设置s中的所有字节为ch, s数组的大小由n给定
    用  法: void *memset(void *s, char ch, unsigned n);
    程序例:
    
    #include <string.h>
    #include <stdio.h>
    #include <mem.h>
    
    int main(void)
    {
       char buffer[] = "Hello world/n";
    
       printf("Buffer before memset: %s/n", buffer);
       memset(buffer, '*', strlen(buffer) - 1);
       printf("Buffer after memset:  %s/n", buffer);
       return 0;
    }
    函数名: pow 功  能: 指数函数(x的y次方)
    用  法: double pow(double x, double y);
    程序例:
    
    #include <math.h>
    #include <stdio.h>
    
    int main(void)
    {
       double x = 2.0, y = 3.0;
    
       printf("%lf raised to %lf is %lf/n", x, y, pow(x, y));
       return 0;
    }
    
    
    函数名: pow10
    功  能: 指数函数(10的p次方)
    用  法: double pow10(int p);
    程序例:
    
    #include <math.h>
    #include <stdio.h>
    
    int main(void)
    {
       double p = 3.0;
    
       printf("Ten raised to %lf is %lf/n", p, pow10(p));
       return 0;
    }
    
    函数名: qsort
    功  能: 使用快速排序例程进行排序
    用  法: void qsort(void *base, int nelem, int width, int (*fcmp)());
    程序例:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int sort_function( const void *a, const void *b);
    
    char list[5][4] = { "cat", "car", "cab", "cap", "can" };
    
    
    int main(void)
    {
       int  x;
    
       qsort((void *)list, 5, sizeof(list[0]), sort_function);
       for (x = 0; x < 5; x++)
          printf("%s/n", list[x]);
       return 0;
    }
    
    int sort_function( const void *a, const void *b)
    {
       return( strcmp(a,b) );
    }
    
    函数名: sqrt
    功  能: 计算平方根
    用  法: double sqrt(double x);
    程序例:
    
    #include <math.h>
    #include <stdio.h>
    
    int main(void)
    {
        double x = 4.0, result;
    
        result = sqrt(x);
        printf("The square root of %lf is %lf/n", x, result);
        return 0;
    }
    函数名: sscanf
    功  能: 执行从字符串中的格式化输入
    用  法: int sscanf(char *string, char *format[,argument,...]);
    程序例:
    
    #include <stdio.h>
    #include <conio.h>
    
    int main(void)
    {
       char label[20];
       char name[20];
       int entries = 0;
       int loop, age;
       double salary;
    
       struct Entry_struct
       {
          char  name[20];
          int   age;
          float salary;
       } entry[20];
    
    /* Input a label as a string of characters restricting to 20 characters */
       printf("/n/nPlease enter a label for the chart: ");
       scanf("%20s", label);
       fflush(stdin);  /* flush the input stream in case of bad input */
    
    /* Input number of entries as an integer */
       printf("How many entries will there be? (less than 20) ");
       scanf("%d", &entries);
       fflush(stdin);   /* flush the input stream in case of bad input */
    
    /* input a name restricting input to only letters upper or lower case */
       for (loop=0;loop<entries;++loop)
       {
          printf("Entry %d/n", loop);
          printf("  Name   : ");
          scanf("%[A-Za-z]", entry[loop].name);
          fflush(stdin);  /* flush the input stream in case of bad input */
    
    /* input an age as an integer */
          printf("  Age    : ");
          scanf("%d", &entry[loop].age);
          fflush(stdin);  /* flush the input stream in case of bad input */
    
    /* input a salary as a float */
          printf("  Salary : ");
          scanf("%f", &entry[loop].salary);
          fflush(stdin); /* flush the input stream in case of bad input */
       }
    
    /* Input a name, age and salary as a string, integer, and double */
       printf("/nPlease enter your name, age and salary/n");
       scanf("%20s %d %lf", name, &age, &salary);
    
    
    /* Print out the data that was input */
       printf("/n/nTable %s/n",label);
       printf("Compiled by %s  age %d  $%15.2lf/n", name, age, salary);
       printf("-----------------------------------------------------/n");
       for (loop=0;loop<entries;++loop)
          printf("%4d | %-20s | %5d | %15.2lf/n",
             loop + 1,
      entry[loop].name,
      entry[loop].age,
      entry[loop].salary);
       printf("-----------------------------------------------------/n");
       return 0;
    }
    函数名: stpcpy
    功  能: 拷贝一个字符串到另一个
    用  法: char *stpcpy(char *destin, char *source);
    程序例:
    
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
       char string[10];
       char *str1 = "abcdefghi";
    
       stpcpy(string, str1);
       printf("%s/n", string);
       return 0;
    }
    
    
    
    
    函数名: strcat
    功  能: 字符串拼接函数
    用  法: char *strcat(char *destin, char *source);
    程序例:
    
    #include <string.h>
    #include <stdio.h>
    
    int main(void)
    {
       char destination[25];
       char *blank = " ", *c = "C++", *Borland = "Borland";
    
       strcpy(destination, Borland);
       strcat(destination, blank);
       strcat(destination, c);
    
       printf("%s/n", destination);
       return 0;
    }
    
    
    
    
    函数名: strchr
    功  能: 在一个串中查找给定字符的第一个匹配之处/
    用  法: char *strchr(char *str, char c);
    程序例:
    
    #include <string.h>
    #include <stdio.h>
    
    int main(void)
    {
        char string[15];
        char *ptr, c = 'r';
    
        strcpy(string, "This is a string");
        ptr = strchr(string, c);
        if (ptr)
           printf("The character %c is at position: %d/n", c, ptr-string);
        else
           printf("The character was not found/n");
        return 0;
    }
    
    
    
    
    函数名: strcmp
    功  能: 串比较
    用  法: int strcmp(char *str1, char *str2);
    程序例:
    
    #include <string.h>
    #include <stdio.h>
    
    int main(void)
    {
        char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
        int ptr;
    
        ptr = strcmp(buf2, buf1);
        if (ptr > 0)
           printf("buffer 2 is greater than buffer 1/n");
        else
           printf("buffer 2 is less than buffer 1/n");
    
        ptr = strcmp(buf2, buf3);
        if (ptr > 0)
           printf("buffer 2 is greater than buffer 3/n");
        else
           printf("buffer 2 is less than buffer 3/n");
    
        return 0;
    }
    函数名: strcpy
    功  能: 串拷贝 用 法: char *strcpy(char *str1, char *str2);
    程序例:
    
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
        char string[10];
        char *str1 = "abcdefghi";
    
        strcpy(string, str1);
        printf("%s/n", string);
        return 0;
    }
    
    函数名: strrev
    功  能: 串倒转 用 法: char *strrev(char *str);
    程序例:
    
    #include <string.h>
    #include <stdio.h>
    
    int main(void)
    {
       char *forward = "string";
    
       printf("Before strrev(): %s/n", forward);
       strrev(forward);
       printf("After strrev():  %s/n", forward);
       return 0;
    }
    函数名: strset
    功  能: 将一个串中的所有字符都设为指定字符
    用  法: char *strset(char *str, char c);
    程序例:
    
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
       char string[10] = "123456789";
       char symbol = 'c';
    
       printf("Before strset(): %s/n", string);
       strset(string, symbol);
       printf("After strset():  %s/n", string);
       return 0;
    }
    
    函数名: strstr
    功  能: 在串中查找指定字符串的第一次出现
    用  法: char *strstr(char *str1, char *str2);
    程序例:
    
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
       char *str1 = "Borland International", *str2 = "nation", *ptr;
    
       ptr = strstr(str1, str2);
       printf("The substring is: %s/n", ptr);
       return 0;
    }
    
    
    
    函数名: strtod
    功  能: 将字符串转换为double型值
    用  法: double strtod(char *str, char **endptr);
    程序例:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
       char input[80], *endptr;
       double value;
    
       printf("Enter a floating point number:");
       gets(input);
       value = strtod(input, &endptr);
       printf("The string is %s the number is %lf/n", input, value);
       return 0;
    }
    函数名: strtol
    功  能: 将串转换为长整数
    用  法: long strtol(char *str, char **endptr, int base);
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(void)
    {
       char *string = "87654321", *endptr;
       long lnumber;
    
       /* strtol converts string to long integer  */
       lnumber = strtol(string, &endptr, 10);
       printf("string = %s  long = %ld/n", string, lnumber);
    
       return 0;
    }
    
    
    函数名: strupr
    功  能: 将串中的小写字母转换为大写字母
    用  法: char *strupr(char *str);
    程序例:
    
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
       char *string = "abcdefghijklmnopqrstuvwxyz", *ptr;
    
       /* converts string to upper case characters */ ptr = strupr(string);
       printf("%s/n", ptr);
       return 0;
    }
    
    
    
    
    函数名: swab
    功  能: 交换字节
    用  法: void swab (char *from, char *to, int nbytes);
    程序例:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    char source[15] = "rFna koBlrna d";
    char target[15];
    
    int main(void)
    {
       swab(source, target, strlen(source));
       printf("This is target: %s/n", target);
       return 0;
    }
    
    函数名: tolower
    功  能: 把字符转换成小写字母
    用  法: int tolower(int c);
    程序例:
    
    #include <string.h>
    #include <stdio.h>
    #include <ctype.h>
    
    int main(void)
    {
       int length, i;
       char *string = "THIS IS A STRING";
    
       length = strlen(string);
       for (i=0; i<length; i++)
       {
           string[i] = tolower(string[i]);
       }
       printf("%s/n",string);
    
       return 0;
    }
    
    
    
    函数名: toupper
    功  能: 把字符转换成大写字母
    用  法: int toupper(int c);
    程序例:
    
    #include <string.h>
    #include <stdio.h>
    #include <ctype.h>
    
    int main(void)
    {
       int length, i;
       char *string = "this is a string";
    
       length = strlen(string);
       for (i=0; i<length; i++)
       {
          string[i] = toupper(string[i]);
       }
    
       printf("%s/n",string);
    
       return 0;
    }
  • 相关阅读:
    C语言的数据、常量和变量
    C语言关键字、标识符和注释
    关于C/C++的一些讨论
    C++ 复合类型(上)
    C 函数
    C 字符输入输出和输入确认
    C++数据处理
    C控制语句:分支与跳转
    C++ 预备知识#关于C++
    范型在java中的应用
  • 原文地址:https://www.cnblogs.com/mmlovejj/p/4263022.html
Copyright © 2020-2023  润新知