首页 > 代码库 > ACM实用C语言函数

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;}

 

ACM实用C语言函数