翁凯老师C语言数字特征值计算我与他人不同的思路。

本文介绍了一种用于计算整数特征值的算法,该算法通过分析整数各位数字的奇偶性来生成对应的二进制特征值。同时对比了两种不同的实现方式,并分析了其优劣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

2数字特征值(5分)
题目内容:

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

我的做法:

#include<stdio.h>
int main()
{
	int in,sz,sw,gn,ys,sjz=0,n=1,fz=0;
	
	scanf("%d",&in);
	gn=in;
	while(gn!=0)
	{
	ys=gn%10;
	sz=ys%2;
	sw=++fz%2;

	if(sw==sz)
	{
		sjz=sjz+n;
	}
		n=2*n;
		gn/=10;
	}	
  printf("%d",sjz);
	
	return 0;
	
 } 

他山之石(转自网友ikeltis):

#include<stdio.h>
 
int main()
{
    int n=1;
    int h=1;
    int num;
    int flag=0;
    scanf("%d",&num);
 
    while(num != 0)
    {
        if((num+n)%2==0)
        {
            flag = flag + h;
        }
        n++;
        num = num / 10;//删去最后一位数
        h=h*2;
    }
    printf("%d\n",flag);
    return 0;
}

思考:

ikeltis的程序比我好的地方是在于找到了奇数加奇数为偶数,偶数加偶数为偶数,奇数加偶数为奇数的特点,直接求出十进制的数字特征。多学习学习数字之间的关系然后在作程序。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值