(C/C++) 算法,编程题

注: 如下的题目皆来自互联网,答案是结合了自己的习惯稍作了修改。

1. 求一个数的二进制中的1的个数。

int func(int x)
{
    int count = 0; 

    while (x)
    {
        count++; 
        x = x& (x - 1); 
    }

    return count; 
}

2. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。

int _tmain(int argc, _TCHAR* argv[])
{
    const char *srcStr = "This is a source string.";
    
    //char *desStr = (char *)malloc(sizeof(srcStr));    // Or below:
    char *desStr = (char *)malloc(sizeof(char)* strlen(srcStr) + 1); 

    myStrcpy(desStr, srcStr);

    printf("Copy result: %s", desStr); 
}

char *myStrcpy(char *strDest, const char *strSrc)
{
    if (strSrc == NULL || strDest == NULL)
    {
        return NULL; 
    }

    if (strDest == strSrc)
    {
        return strDest; 
    }

    char *strDestStart = strDest; 

    while (*strDest !='