题目内容:
对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。比如,对于342315,这个二进制数字就是001101。
代码如下:
#include<stdio.h> #include<math.h> int main() { int a = 0, b = 0, c = 0,add=0,num=0,fbl=0; scanf("%d", &a); while (a > 0)//循环分解输入数字。 { c++;//对每位数字进行编号。 b = a % 10; //分解出输入数字的各位。 a = a / 10;//计算分解后剩下的a。 if((b%2==0)&&(c%2==0)||(b%2!=0)&&(c%2!=0))//按照题意对输入数字和编号进行判断。 { add = 1; } else { add = 0; } fbl= (add % 10)*pow(2,(c-1));//二进制转换为十进制。 num=num+fbl;//转换后的数加起来。 }printf("%d", num);//输出。 return 0;