1、删除字符串s中出现的所有字符squeeze(char s[ ], int c)
void squeeze_test(char str[],int c) { int i,j; for (i=j=0;str[i] !='\0'; i++) if (str[i] != c) str[j++]=str[i]; str[j]='\0'; }
2、标准库函数strcat(s, t)将字符串t连接到字符串s的尾部----假设s有足够的空间保存
void strcat(char s[], char t[])
{ int i, j; i=j=0; while(s[i] !='\0') i++; while((s[i++] = t[j++]) != '\0') ; }
3、函数getbits(x, p, n)返回x中从右边数第p位开始向右数n位的字段
unsigned getbits(unsigned x, int p, int n) { return (x >> (p+1)) & ~(~0 << n); }
4、C语言实现判断大端与小端。
#include<stdio.h> int check() { union check { int i; char ch; }c; c.i =1; return (c.ch == 1); } int main() { int ret; ret = check(); if(ret == 0) { printf("Big\n"); } else { printf("little\n"); } return 0; }
5、结构体与共同体的区别
a、struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。
b、对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。
6、计算运行程序的计算机字长worldlength()
int worldlength(void) { int i; unsigned v = (unsigned)~0; for (i = 1; (v = v >> 1) >0); i++) ; return i ; }
7、bitcount()函数统计x中值为1的二进制位数
int bitcount(unsigned x) { int b; for (b = 0; x !=0; x>>= 1) if (x & 01) b++; return b; }
8、折半查找法(二分查找法)
/*binsearch函数,v数组是已从小到大排好序的数组*/ int binsearch(int x, int v[], int n) { int low, high, mid; low = 0; high = n -1; while ( low <= high) { mid = (low+high) / 2; if (x < v[mid]) high = mid -1; else if low = mid +1; else return mid; } return -1; }