奇偶特征值be like:
图片来源:https://www.icourse163.org/learn/ZJU-199001?tid=1465619444#/learn/ojhw?id=1238434216
比如,对于342315,这个二进制数字就是001101。
我们使用do while循环不断获取位数及对应位上的数字,其中使用if条件判断得到二进制每一位的数字并直接转换为十进制。由于a=0时本身只能加0,所以我干脆将十进制计算语句放到a=1的条件下了。代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
int num=0,n=1,x=0,a=0; //num为整个数字,n为位数,x为每一位的数字,a为每一位的二进制数字
int nn=0,xx=0; //判断位数与相应数字的奇偶性
int b=0,num1=0; //num2为最终得到的十进制值
printf("请输入一个范围是[0,1000000]的非负整数");
scanf("%d",&num);
do{
x=num%10;
nn=n%2;
xx=x%2;
double c=n-1.0;
if(nn==xx){
a=1;
b=pow(2.0,c); //二进制转十进制
num1+=b;
}
else{
a=0;
}
num=num/10;
n++;
}while(num>0);
printf("得到的十进制值为:%d",num1);
return 0;
}