精华内容
下载资源
问答
  • C++十进制转换任意进制

    千次阅读 2018-11-28 09:34:11
    如上是将十进制转换1-16进制,并且有可能会输入负数 首先我们先考虑当输入的要转换的数为0,那么不管是任何进制,转换都是0. 然后考虑进制是否小于10,因为大于等于10之后的进制需要使用字符’A’-‘F’. 考虑进制...

    1.题目描述:


    2.算法分析:

    如上是将十进制转换1-16进制,并且有可能会输入负数
    首先我们先考虑当输入的要转换的数为0,那么不管是任何进制,转换都是0.
    然后考虑进制是否小于10,因为大于等于10之后的进制需要使用字符’A’-‘F’.
    考虑进制小于10之后我们又需要考虑需要转换得数是否是负数。
    先考虑正数,用短除法,但是需要注意所取得余数应该逆序输出,所以应该存入字符数组或者字符串操作。
    当转换的数为0时跳出循环。
    对字符数组逆序输出。
    然后考虑负数只需要将负数取绝对值求出后在第一位添加-号即可。
    当进制>10时,我们考虑多出的字符’A’-'F’即可。


    3.源代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    
    char s[10005];
    
    int main(){
        int x,n;
        scanf("%d%d",&x ,&n);
        int count = 0;  //记录存了多少数组 
        if(x == 0){ //当 
        	printf("0\n");
        }
        if(n < 10){
            int r;
            if(x < 0){
                int x1 = abs(x);
                while(x1 != 0){
                r = x1 % n;
                s[count] = r + '0';
                count++;
                x1 /= n;
            }
                printf("-");
            for(int i = count - 1 ; i >=0 ; i--){
                printf("%c",s[i]);
            }
            }else{
            while(x != 0){
                r = x % n;
                s[count] = r + '0';
                count++;
                x /= n;
            }
            for(int i = count - 1 ; i >=0 ; i--){
                printf("%c",s[i]);
            }
            }
        }else{
            int r;
            if(x < 0){
                int x1 = abs(x);
                while(x != 0){
                r = x % n;
                if(r == 10){
                    s[count] = 'A';
                }else if(r == 11){
                    s[count] = 'B';
                }else if(r == 12){
                    s[count] = 'C';
                }else if(r == 13){
                    s[count] = 'D';
                }else if(r == 14){
                    s[count] = 'E';
                }else if(r == 15){
        			s[count] = 'F';
                }else{
                    s[count] = r + '0';
                }
                count++;
                x /= n;
            }
                printf("-");
            for(int i = count - 1 ; i >=0 ; i--){
                printf("%c",s[i]);
            }
            }else{
            while(x != 0){
                r = x % n;
                if(r == 10){
                    s[count] = 'A';
                }else if(r == 11){
                    s[count] = 'B';
                }else if(r == 12){
                    s[count] = 'C';
                }else if(r == 13){
                    s[count] = 'D';
                }else if(r == 14){
                    s[count] = 'E';
                }else if(r == 15){
        			s[count] = 'F';
                }else{
                    s[count] = r + '0';
                }
                count++;
                x /= n;
            }
            for(int i = count - 1 ; i >=0 ; i--){
                printf("%c",s[i]);
            }
            }
        }
        return 0;
    }
    

    欢迎关注Blog:http://47.107.118.184

    展开全文
  • 1、任意进制转十进制 long int strtol(const char *nptr,char **endptr,int base); strtol函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36 使用: char* s=“1011”; cout<<...

    自带函数

    1、任意进制转十进制

    long int strtol(const char *nptr,char **endptr,int base);

    strtol函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36

    使用:

    char* s=“1011”;
    cout<<strtol(s,NULL,2);

    输出:

    11

    注意:该函数输出的值为非法字符(超过数制范围)之前的值
    比如说:


    char* s=“1z1”;
    cout<<strtol(s,NULL,2);


    这当中,‘z’就是非法字符,所以最后的结果为1

    2、十进制转任意进制

    char *itoa (int value, char *str, int base );

    返回值:返回指向str的指针,无错误返回。 [2]
    int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等,大小应在2-36之间。

    使用:

    int number = 123456;
    char string[25];
    itoa(number, string, 2);
    printf(“integer=%d string=%s\n”, number, string);

    输出:

    integer=123456 string=11110001001000000

    注意:该函数在PAT竞赛中因为安全因素被禁用

    (5) 不能用的库函数
    某些库函数因为存在安全隐患是不能用的,目前主要常见的是itoa和gets。

    自行实现

    1、任意进制转十进制

    与strtol不同的在于,这个函数实现在遇到非法输入的时候会返回-1以表示输入不规范,并不会选取合法字符进行计算

    long  long MAP(long  long i){
    	if(i>='0'&&i<='9') return i-48;
    	else if (i>='a'&&i<='z') return i-87;
    	else return -1;
    }
    long  long ToD(string s,long  long radix){
    	long  long current, exp, ans=0;
    	for(int i=s.size()-1;i>=0;i--){
    		current=MAP(s[i]);
    		exp=s.size()-i-1;
    		if(current>=0&&current<radix){
    			ans+=current*pow(radix,exp);
    		}else return -1;
    	}
    	return ans;
    }
    

    使用:

    cout<<ToD(“5b9e”,16);

    输出:

    23454

    2、十进制转任意进制(36进制及以下)
    string DTo(long long int num, long long int radix){
    	char map[36]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    	string rst="";
    	vector<char> result;
    	while(num!=0){
    		result.push_back(map[num%radix]);
    		num/=radix;
    	}
    	for(int i=result.size()-1;i>=0;i--){
    		rst+=result[i];
    	}
    	return rst;
    }
    

    使用:

    cout<<DTo(23454,16);

    输出:

    5b9e

    展开全文
  • c++实现十进制以内任意进制的转换 不需要多说 直接下了看代码
  • # include # include using namespace std ...//这些都是为了能转化为十六进制。 default : cout s . top ( ) ; break ; } s . pop ( ) ; } return 0 ; }
    #include<iostream>
    #include<stack>
    
    using namespace std;
    
    int main() {
        int r, n;
        stack<int> s;
        cin >> n >> r;
        while (n) {
            s.push(n % r);
            n /= r;
        }
        while (!s.empty()) {
            switch (s.top()) {
                case 10:
                    cout << 'A';
                    break;
                case 11:
                    cout << 'B';
                    break;
                case 12:
                    cout << 'C';
                    break;
                case 13:
                    cout << 'D';
                    break;
                case 14:
                    cout << 'E';
                    break;
                case 15:
                    cout << 'F';
                    break;//这些都是为了能转化为十六进制。
                default:
                    cout << s.top();
                    break;
            }
            s.pop();
        }
        return 0;
    }
    
    
    
    展开全文
  • c++实现代码36进制与十进制之间进行转换,标准代码,亲自验证过,可正常运行,直接使用即可
  • //最大支持36进制 #include<iostream> #include<string> using namespace std; char digit[] = { '0','1','2','3', '4','5', '6','7', '8','9', 'A','B','C','D', 'E','F', 'G','H', 'I','J', ...
    //最大支持36进制
    
    
    #include<iostream>
    #include<string>
    
    using namespace std;
    
    char digit[] = { '0','1','2','3', '4','5', '6','7', '8','9', 
    			     'A','B','C','D', 'E','F', 'G','H', 'I','J',
    			     'K','L','M','N', 'O','P', 'Q','R', 'S','T',
    			     'U','V','W','X', 'Y','Z' };
    
    
    int main()
    {
    	unsigned int src,count;
    	cout << "输入要转换的十进制数:";
    	cin >> src;
    	cout << endl;
    	cout << "输入要转换进制:";
    	cin >> count;
    	cout << endl;
    	//
    	unsigned int  tmp, tmp_src=src;  
    	string res;
    	while (tmp_src)
    	{
    		tmp = tmp_src % count;
    		tmp_src /= count;
    		res = digit[tmp]+res;
    	}
    
    	cout << "将十进制数 " << src << " 转换为 " << count << " 进制数为:" << res << endl;
    
    	return 0;
    }
    
    展开全文
  • C++ 十进制转其他进制

    2019-04-17 20:07:35
    C++进制转其他进制 开发工具与关键技术:C++、Visual...这篇文章主要内容是十进制转其他进制,现在的进制有十六进制、十进制、八进制、二进制。 我们先来看代码: #include #include using namespace std; v...
  • 介绍了C++ 十进制转换为二进制的实例代码,有需要的朋友可以参考一下
  • 十进制转换为任意进制 其实就相当于把10进制转换2进制的方法套用一下,如果小于10的话直接显示,如果大于10做字符上的处理。 string change_r(long long n, int r) { if (n == 0) { return "0"; } string ans...
  • C++实现十进制转换为任意进制

    万次阅读 2018-08-11 20:20:28
    十进制数在C++中用什么表示? 一个十进制数,在程序中用什么方式转换为其他进制,和在数学中的思路一样吗?? 输出的结果用什么表示比较方便? 下面的程序中digit思考为什么要用静态变量? #include &lt;...
  • c++十进制转换n进制

    2021-06-15 10:33:43
    利用这段代码可以实现10进制转换为36进制下的任意进制。 代码的思路很简单,利用一段函数,将每一次取余得到的结果存入数组,最后利用for循环和switch语句将得到的数组反响输出,就得到了转换后的结果。 以下是代码...
  • C++十进制转换为任意进制

    万次阅读 2015-10-25 17:18:27
    //十进制转换为任意进制的源码 #include using namespace std; int main() { long n; int p,c,m=0,s[100]; cout输入要转换的数字:"; cin>>n;
  • C++ 基础编程之十进制转换为任意进制及操作符重载  最近学习C++ 的基础知识,完成十进制转换为任意进制及操作符重载,在网上找的不错的资料,这里记录下, 实例代码: #include #include #include using namespace...
  • C++语言实现带小数的任意进制转换,使用了数据结构中的栈和队列,在VC++6.0上编译运行通过。对于学习C++和数据结构有一定的参考意义!
  • C++任意进制转换为十进制我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加。 废话不多说直接上代码。#include #include using namespace std;int main() { int r,i=0,ans=0; string n; cin>>r>>...
  • 十进制转二进制:   //十进制转二进制 #include&lt;iostream&gt; using namespace std; void printbinary(const unsigned int val) { for(int i = 16; i &gt;= 0; i--) { if(val &amp; (1 ...
  • #include<iostream> using namespace std;... //10进制转换成任意进制 long a; cin >> a; int base; //base进制 cin >> base; int b[100]; int num = 0; int i = 0; while (a >...
  • visual c++ 2进制字符串10进制
  • C++任意进制转换为十进制

    千次阅读 2018-08-12 16:09:53
    C++任意进制转换为十进制 我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加。 废话不多说直接上代码。 #include&lt;iostream&gt; #include&lt;string&gt; using namespace std; ...
  • 主要为大家详细介绍了C++实现十进制数转为其它进制数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 源代码来的,经过运行唔错的,想交作业或者懒得去计算的可以下载去玩玩
  • 代码 #include <iostream> #include <vector> #include <string> ... '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', '-' ...string converse(int digital, int weight) ...
  • C++其他进制转十进制

    2019-04-17 20:09:57
    C++其他进制转十进制 开发工具与关键技术:C++、VisualStudio 作者:何任贤 撰写时间:2019年04月15日 在学习C++基础过程中,接触到进制转换,个人想要尝试一下用C++来写一个进制 转换,这篇文章主要内容是其他...
  • } } int main() { //几进制 int decimal; //需要转换的数 int number; input: std::cout 请输入要转换的进制:" ; std::cin >> decimal; std::cout 请输入要转换的数字:" ; std::cin >> number; change(decimal, ...
  • 作为一个半路出家的C/C++...C++内置的itoa是非常强大的,能够将十进制的int型转换成任意进制的字符串输出,利用这一点,实际上任意进制的互相转换利用itoa以及设计一个函数来实现任意进制-》十进制的组合即可。。PS:
  • C++十进制数转为其它进制数

    千次阅读 2018-12-31 20:05:27
    一、思路:用辗转相除法 二、实现程序: #include &lt;iostream&gt; using namespace std;...int main(int argc, const char * argv[]) { ... // num存储输入的数,n存储进制 i = 0;...
  • 10进制整型2、8、16进制 vc
  • C语言教程:十进制转换任意进制

    千次阅读 2021-03-02 15:55:43
    #include "stdio.h" #include "stdlib.h" #define N 10 static void base_convert(void) { int num,base; int n[128]; int i = 0;... printf("please enter ...//输入任意十进制 printf("please enter the base:");

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,255
精华内容 12,102
关键字:

c++十进制转任意进制

c++ 订阅