I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1. M是一个Byte,请计算M中bit为1的个数

#include <stdio.h>
int main()
{
   
int i,count;
   
char M=0x11;    /*00010001b*/
   printf(
"%x\n",M);
   
for(i=0,count=0;i<8;i++)
   {
      
if( ((1<<i)&M)  != 0)  /*这个地方应该用括号括起来*/
      {
         count
++;
      }
   }
   printf(
"%d\n",count);
}

 

2. 计算Num[100]中9的个数

#include <stdio.h>
int main()
{
    
int i,count;
    
char Num[100]={0x1,0x2,0x3,0x4,0x9,0x12,0x3,0x9};
    
for(i=0,count=0;i<100;i++)
        
if*(Num+i) == 9)
            count
++;
    printf(
"%d",count);
}

 

3. 将整数M(4Bytes)转换成一个字符串

#include <stdio.h>
int main()
{
    
int i=0;
    
int M=12345;
    
char str[12];
    
do
    {
        str[ i ]
= (M%10)+0x30;
        i
++;
    } 
while( (M=M/10)>0 );
    printf(
"%s",str);
}

 

4. 将一个字符串倒置

#include <stdio.h>
#include 
<string.h>

int main()
{
    
int i,Len;
    
char str[12]="abcdef";
    
char temp;

    Len
=strlen(str);
    
for(i=0;i<Len/2;i++)
    {
        temp 
= *(str+i);
        
*(str+i) = *(str-i+Len-1);
        
*(str-i+Len-1= temp;
    }
    printf(
"%s",str);
}

 

5. 将一个单向链表 (linked list)逆序 (注:原题写成双向链表,是个陷阱)

= h->next; /* h是头节点 */
h
->next = NULL; /*  h->next 充当临时变量 */
while( q!=NULL)
{
    p 
= q;
    q 
= q->next;
    p
->next = h->next;
    h
->next = p;
}

 

6. 在一个字符串查找一个最长子串,要求这个子串的每个字符相同

posted on 2008-09-12 16:18  jcsu  阅读(896)  评论(0编辑  收藏  举报