翁凯老师慕课C语言基础第四周检测练习---MOOC数字特征变换

 一.题目要求

对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。
对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。
这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。
并把得到的二进制转换成十进制
比如,对于342315,这个二进制数字就是001101。他的十进制就是13。

 

 二.代码演示

 

#include<stdio.h>
int main()
{
	int count=0; //移位计数 
	int odd;     
	int num;
	int sum=0;
	int mk;
	scanf("%d",&num);
	while(num>0)
	{
	 	odd=num%10; //取出最后一位 
		num=num/10; //减去一位过后的整数 
		count++;   //移动一位就加一次 
		int t=count; //用来接收移动位数方便后面进行2进制求和 
		int m=1;
		if(odd%2==0&&count%2==0) //判断是不是都是偶数 
		{
			mk=1;              //如果是就将该位,置1 
		}
		else if(odd%2!=0&&count%2!=0) //判断是不是都是奇数 
		{
			mk=1;              //如果是就将该位,置1 
		}
		else
		{
			mk=0;          //其他情况通通都,置0 
		}
		for(;t>1;t--)  //求出该位置在二进制中表示多少 
		{
			m=2*m;   //循环结束得到这个二进制值 
		}
		sum=sum+m*mk; //求和计算 
	}
	printf("%d",sum); 
 } 

三.期望

欢迎在慕课上学习的小伙伴能来一起交流学习,我这个代码只是能通过慕课编译,其实还是有很多问题,引入太多变量,感觉还是很复杂,希望发现的小伙伴帮我指正我们一起进步。可以将更优的代码放评论区或者私信我哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿鹏别摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值