70,020
社区成员




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int invert(const char *,int );
int main(void)
{
int zhi,number;
char *pstr ="010111010";
number = strlen(pstr);
zhi = strtol(pstr, NULL, 2);
printf("%d",invert(pstr,number));
return 0;
}
int invert(const char *str,int n)
{
int num;
int i,sum =0;
for(i=n-1;i>=0;i--)
{
if(*(str+i)=='1')
sum += 1 * pow(2,(n-1-i));
else
sum += 0 *pow(2,(n-1-i));
}
return sum;
}
我这样写,虽然能实现,但是有没有好的方法啊?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int invert(const char *,int );
int main(void)
{
int number;
char *pstr ="01001001";
number = strlen(pstr);
printf("%d",invert(pstr,number));
return 0;
}
int invert(const char *str,int n)
{
int num;
int i,sum =0;
num = atoi(str);
for(i=0;i<n;i++)
{
sum += (01 & num)* pow(2,i);
num >>= 1;
}
return sum;
}
我写的这个程序怎么是 41 ,不是71呢?
这个程序的问题在哪里,请高手指点一下,谢谢!