判断回文,位与,位或

来源:互联网 发布:acm规则知乎 编辑:程序博客网 时间:2024/05/08 15:11
//判断字符串是否是回文?
int fun(char *sre)
{
char *s1,*s2;
s1 = str;
s2=str+strlen(str)-1;
if(strlen(str)%2 != 0)
{
return 0;
}
while(s1<=2)
{
if(*s1==*s2)
{
s1++;
s2--;
}
else
return 0;
}
return 1;
}
//讲一个字符串转化为十进制数(“123456” to 123456,字符串中只有数字,没有
//没有其他字母,长度不确定)
int str_to_num(char *str)
{
char *temp = str;
int num = 0;
while(*temp != '\0')
{
num = num * 10 + (*temp - '\0');
temp++;
}
return temp;
}
//实现按位与
//int bis(int d, int m);m的二进制位上为1,则把d相应的位 置1
int bis(int d,int m)
{
char temp_1[32],temp_2[32];
int i=0,j=0;
memset(temp_1,'\0',sizeof(temp_1));
while(d != 0)
{
temp_1[i++] = d%2;
d=d/2;
}
memset(temp_2,'\0',sizeof(temp_2));
i=0;
while(m!=0)
{
temp_2[i++]=m%2;
m=m/2;
}
for(i=0;i<32;i++)
{
if(temp_2[i] == 1)
temp_1[i]=1;
}
d = 0;
for(i=0;i<32;i++)
d+=temp_1[i]*pow(2,i);
return d;
}

int bis(int d,int m)
{
char temp_1[32],temp_2[32];
int i=0;j=0;
memset(temp_1,'\0',sizeof(temp_1));
while(d != 0)
{
temp_1[i++] = d%2;
d = d/2;
}
memset(temp_2,'\0',sizeof(temp_2));
while(m != 0)
{
temp_2[i++] = m %2;
m = m/2;
}
for(i=0;i<32;i++)
{
if(temp_2[i]==1)
{
temp_1[i]=0;
}
}
d=0;
for(i=0;i<32;i++)
{
d += temp_1[i]*pow(2,i);
}
return d;
}

1 0
原创粉丝点击