函数名: 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; }