K&R的名著:小程序总结1

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



 

你可能感兴趣的:(K&R的名著:小程序总结1)