您的位置:首页 > 移动开发 > 微信开发

K&R的名著:<C程序设计语言>小程序总结1

2012-10-06 18:36 267 查看
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;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: