(练手)翁恺c语言第四章编程题02 数字特征值

(练手) 数字特征值

题目内容:

对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。比如,对于342315,这个二进制数字就是001101。
这里的计算可以用下面的表格来表示:
在这里插入图片描述
你的程序要读入一个非负整数,整数的范围是[0,1000000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。
提示:将整数从右向左分解,数位每次加1,而二进制值每次乘2。

输入格式:
一个非负整数,整数的范围是[0,1000000]。
输出格式:
一个整数,表示计算结果。
输入样例:
342315
输出样例:
13
时间限制:500ms内存限制:32000kb
#include<stdio.h>
int main()
{
int x,y,n,m,a,b,c,shuzijiou,shuweijiou,jiouyizhi,weizhi,jieguo1,jieguo2;
int shuwei=0;
a=1;
jieguo2=0;
scanf("%d",&x);
while(x>0){
m=x%10;//最后一位 ,,分离出的那个数
n=x/10;//剩余的数
x=x/10;
//这里是分离数据
shuwei++;
//最后一位对应的从左开始的位数,记录位置编号;

if(shuwei==(shuwei/2)*2)//位置的奇偶性 
shuweijiou=1;
else
shuweijiou=0; 
//如果数字位置为偶数,如第二位,则记为1; 

if(m==(m/2)*2)//分离出的那个数的奇偶性 
shuzijiou=1;//偶数为1,奇数为0 ,数字的奇偶性 
else
shuzijiou=0;
//如果分离出来的那个数是偶数,记为1;

if(shuzijiou==shuweijiou)
jiouyizhi=1;
else
jiouyizhi=0;
//进行奇偶一致性的判断

jieguo1=jiouyizhi*a;
jieguo2=jieguo2+jieguo1;
a=a*2;//二进制位值

}
printf("%d",jieguo2); 

}

展开阅读全文
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值