为什么输入46,输出结果是3呢,不应该是2嘛
#include <stdio.h>
int main()
{int numb=0;
int weishu=1;
int x=0;
int a=0;
scanf("%d",&numb);
while(numb>0)
{
if((numb+weishu)%2==0)
{a=2^(weishu-1)
;x=x+a;}
numb=numb/10;
weishu++;
}
printf("%d",x);
return 0;}
为什么输入46,输出结果是3呢,不应该是2嘛
#include <stdio.h>
int main()
{int numb=0;
int weishu=1;
int x=0;
int a=0;
scanf("%d",&numb);
while(numb>0)
{
if((numb+weishu)%2==0)
{a=2^(weishu-1)
;x=x+a;}
numb=numb/10;
weishu++;
}
printf("%d",x);
return 0;}
^符号在C语言中是异或运算符,求幂次方用pow函数
代码修改如下
#include <stdio.h>
#include <math.h> //包含头文件
int main()
{
int numb=0;
int weishu=1;
int x=0;
int a=0;
scanf("%d",&numb);
while(numb>0)
{
if((numb+weishu)%2==0)
{
a=pow((double)2,weishu-1);//2^(weishu-1) //这里修改成这样
x=x+a;
}
numb=numb/10;
weishu++;
}
printf("%d",x);
return 0;
}