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