zoukankan      html  css  js  c++  java
  • c语言实践 数字特征值

    这题的要求是这样的:

    这题我没做出来,我大概思路是这样的,根据输入的数字,把这个数字的每一位都分离出来,然后判断奇数还是偶数,再判断序是奇数还是偶数,最后两个奇偶性比较,输出1还是0,这个输出的1和0该怎么保存,以及最后怎么转化为十进制呢? 卡住了。

    2018.9.17更新

    最近又想了一下,做出来了。

    int main()
    {
        
    	int input = 0;//用户输入的数字
    	int digit = 0;//每次循环提取出的数字
    	int n = 1;//第几位数了
    	int sum = 0;//结果
    	int r = 1;//二进制位的权重
    	int c = 0;//对应的二进制字符
    
    	scanf_s("%d",&input);
    
    
    	while (input!=0)
    	{
    		//提取出最某位的数字
    		digit = input % 10;
    		
    		//奇数+奇数=偶数
    		//偶数+偶数=偶数
    		//奇数+偶数=奇数
    		//当数字和序号奇偶性相同的时候,它们的和一定是偶数,偶数一定能除开2
    		if ((digit + n) % 2 == 0)
    		{
    			c = 1;//生成对应的二进制数字
    		}
    		else
    		{
    			c = 0;//生成对应的二进制数字
    		}
    
    		//计算权重
    		r = r * 2;//每循环一次二进制数字的权重就是2的n次方
    
    		//修正权重,觉得这里的代码挺丑陋的,但是又不知道该怎么改。
    		if (n == 1)//当第一次循环的时候权重应该是1,但这里是2,所以修正一下权重的值。
    		{
    			r = 1;
    		}
    
    		//计算特征值
    		sum = sum + c * r;
    		
    		//准备提取下一个数字
    		n++;
    
    		//去掉个位之后形成的新数字
    		input = input / 10;
    
    	}
    
    	printf("%d",sum);
    	return 1;
    }
    

      

  • 相关阅读:
    二进制安全的一些基础知识
    栈溢出笔记-第五天
    一次基于白盒的渗透测试
    栈溢出笔记-第四天
    Hadoop1-认识Hadoop大数据处理架构
    Kubernetes1-K8s的简单介绍
    Docker1 架构原理及简单使用
    了解使用wireshark抓包工具
    Linux系统设置开机自动运行脚本的方法
    Mariadb/Mysql 主主复制架构
  • 原文地址:https://www.cnblogs.com/yfish/p/9621457.html
Copyright © 2011-2022 走看看