0
int stringXor(char *str1,char *str2)
{
    int num1=0,num2=0;
    for (int i = 0; i<strlen(str1); i++)
    {
        num1=str1[i]-'0';
        num2=str2[i]-'0';
        num1 = num1 | num2;
        str1[i]=(char)num1;
        //printf("%d",str1[i]);
    }

    int count=0;
    for(int j=0;j<strlen(str1);j++)
    {
        if(str1[j]==1)
            count++;
    }
    return count;
}

我不知道错误是什么,但是or对字符串的每个字符都没有成功操作。

4

1 回答 1

1

如果您想要一个函数来返回任一字符串中包含 a 的位置数1,请考虑编写一个更简单的函数来完成此操作。例如:

int CountOnes( char *str1, char *str2 )
{
    int count = 0;
    int len = strlen( str1 );  // we assume that strlen(str1) == strlen(str2)

    for ( int i = 0; i < len; i++ )
    {
        if ( str1[ i ] == '1' || str2[ i ] == '1' )
            count++;
    }

    return count;
}

str1请注意,此功能不会像您目前所做的那样包含更改的副作用。

要将得到的 OR'd 字符串存储到str1,更改行

if ( str1[ i ] == '1' || str2[ i ] == '1' )

str1[ i ] = ( ( str1[ i ] - '0' ) | ( str2[ i ] - '0' ) ) + '0';
if ( str1[ i ] == '1' )
    count++;
于 2014-10-08T21:50:49.533 回答