理解:取得整数的数字可以用对10取余一个一个的计算;而数位可以在循环中累加一次一次的得到。
代码1:
#include<stdio.h>
int main()
{
int count = 0;//移位计数,用来表示数位(1,2,3,4,5,6)
int temp;
int num;//输入的数字
int sum = 0;//求和
int kp;
scanf("%d",&num);
while(num>0){
temp = num%10;//取出最后一位
num /= 10;//减去最后一位之后的数
count++;//移位一次就加一次
int t = count;//用来接收移位,方便之后进行二进制求和
int a = 1;
if(temp%2 == count%2) {//用来判断是不是同时是奇数或者偶数,如果是kp=1
kp = 1;
}
else{//两者不同时为奇数或者偶数,kp=0
kp = 0;
}
for(;t>1;t--){//求出该位置在二进制中表示多少
a = a*2;//循环结束得到这个二进制值
}
sum = sum + a*kp;//求和计算
}
printf("%d\n",sum);
return 0;
}
代码2: