zoukankan      html  css  js  c++  java
  • 关于C++读入数字按位取出与进制转换问题

    这一片博客我就不写具体的一个题了,只是总结一种典型问题——读入数字按位取出。

    就拿数字12345举例吧。

    是首先,我们要取出个位。这样取出:

    12345/1=12345

    12345%10=5.     //为了好发现规律

    这样我们就有了它的个位。十位是这样:

    12345/10=1234

    1234%10=4.

    同理,百位:

    12345/100=123

    123%10=3.

    于是可以发现,取出哪一位,就是要先将原数除以这一位的位名,再模10.

    程序:

    #include<iostream>
    #include<cmath>
    using namespace std;
    int main()
    {
        int a[100];
        int wei = 0;
        int num;
        cin >> num;
        while ((num / (int)pow(10, wei)) != 0)        //循环终止条件是这个数的位数小于这一次要除以的数的位数
        {
            a[wei] =(num/(int)pow(10,wei))%10;        //根据刚才得出的结论,取出各位,存到数组中。
            wei++;    
        }
    }

    然后是进制转换问题。其实和取位问题差不多,只不过取出之后要乘上这一位对应的进制的次方数。

    程序:

     1 long long to10(int jz,int num)//功能:将输入的数转换成十进制 
     2 {    
     3     long long result=0;
     4     int wei=0;
     5     while(num/(int)pow(10,wei)!=0)//将输入的数按位取出 
     6     {
     7         result+=pow(jz,wei)*((int)(num/pow(10,wei))%10);//按数所在的位置乘上对应的进制的次方 
     8         wei++;
     9 //        (num/1)%10
    10 //        (num/10)%10
    11 //        (num/100)%10
    12     }
    13     return result;
    14  } 
  • 相关阅读:
    Linux自动批量增加公钥
    主机存活监控
    [Linux小技巧] 将 rm 命令删除的文件放在回收站
    Linux常见问题及命令
    数据分析职位招聘情况及发展前景分析
    SQL查询小案例
    Oracle查看表结构
    前端JSON请求转换Date问题
    Centos7最小化安装
    拓词和扇贝有何不同
  • 原文地址:https://www.cnblogs.com/arknight/p/12235458.html
Copyright © 2011-2022 走看看