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

    2014-12-04 09:54:46
    我的其他资源都是免费的,是对于c语言初学者的帮助比较大的,其中有单片机,ARM,数据结构,window编程,MFC编程,自己编写的小游戏。
  • C++任意进制转换为十进制我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加。 废话不多说直接上代码。#include #include using namespace std;int main() { int r,i=0,ans=0; string n; cin>>r>>...

    C++任意进制转换为十进制

    我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加。
    废话不多说直接上代码。

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main()
    {
        int r,i=0,ans=0;
        string n;
        cin>>r>>n;//R表示进制,N表示要转换的数,ans表示要转换的结果。
        while(n.size()!=i)
        {
            ans*=r;       //我这里是把1看成0,把0看成1来算的。这样比较方便。其实都一样。
            ans+=n[i]-'0';
            i++;
        }
        cout<<ans<<endl;
        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++任意进制转换为十进制

    千次阅读 2018-08-12 16:09:53
    C++任意进制转换为十进制 我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加。 废话不多说直接上代码。 #include&lt;iostream&gt; #include&lt;string&gt; using namespace std; ...

    C++任意进制转换为十进制
    我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加。
    废话不多说直接上代码。

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main()
    {
        int r,i=0,ans=0;
        string n;
        cin>>r>>n;//R表示进制,N表示要转换的数,ans表示要转换的结果。
        while(n.size()!=i)
        {
            ans*=r;       //我这里是把1看成0,把0看成1来算的。这样比较方便。其实都一样。
            ans+=n[i]-'0';
            i++;
        }
        cout<<ans<<endl;
        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 / c++ 任意进制转换函数

    千次阅读 2019-08-02 17:46:25
    c/c++进制转换函数实现任意进制数转任意进制数 注意:此函数不依赖任何头文件 多函数实现:(11进制及以上有BUG) 调用aikzp(待转换数字,待转换进制,生成进制)返回生成指定进制数字 int rev(int a,int od) {//颠倒...

    c/c++进制转换函数实现任意进制数转任意进制数

    注意:此函数不依赖任何头文件
    2019/08/07增补


    多函数实现:(11进制及以上有BUG)
    调用aikzp(待转换数字,待转换进制,生成进制)返回生成指定进制数字

    int rev(int a,int od) {//颠倒数加强版函数
    	int n=a,m=0;
    	while(n!=0) {
    		m=m*10+n%10+od;
    		n/=10;
    	}
    	return m;
    }
    int aikzp(int a,int k,int p) {//进制转换 调用:[addb(待转换数字,待转换进制,生成进制)]
    	int n=a,m=0,t=1,bt=0;
    	if(k==p) return a;
    	if(k!=10) {
    		while(n!=0) {
    			m+=n%10*t;
    			n/=10;
    			t*=k;
    		}
    		n=m;
    		m=0;
    	}
    	t=0;
    	if(p!=10) {
    		while(n!=0) {
    			m=m*10+n%p;
    			n/=p;
    			t++;
    		}
    		m=rev(m,0);
    		t--;
    		bt=m;
    		while(t>0){
    			if(bt<10) m*=10;
    			else bt/=10;
    			t--;
    		}
    	} else m=n;
    	return m;
    }
    

    简单函数实现:(11进制及以上有BUG)
    调用jd_aikzp(待转换数字,待转换进制,生成进制)返回生成指定进制数字

    int jd_aikzp(int a,int k,int p) {
    	int n=a,m=0,t=1,bt=0,dm=0;
    	if(k==p) return a;
    	if(k!=10) {
    		while(n!=0) {
    			m+=n%10*t;
    			n/=10;
    			t*=k;
    		}
    		n=m; 
    	}
    	t=m=0;
    	if(p!=10) {
    		while(n!=0) {
    			m=m*10+n%p;
    			n/=p,t++;
    		}
    		while(m!=0) {
    			dm=dm*10+m%10;
    			m/=10;
    		}
    		bt=dm,m=0,t--;
    		while(t>0) {
    			if(bt<10) m*=10,t--;
    			else bt/=10,t--;
    		}
    	} else m=n;
    	return m;
    }
    

    使用例子:
    c:

    #include<stdio.h>
    int rev(int a,int od) {//颠倒数加强版函数
    	int n=a,m=0;
    	while(n!=0) {
    		m=m*10+n%10+od;
    		n/=10;
    	}
    	return m;
    }
    int aikzp(int a,int k,int p) {//进制转换 调用:[addb(待转换数字,待转换进制,生成进制)]
    	int n=a,m=0,t=1,bt=0;
    	if(k==p) return a;
    	if(k!=10) {
    		while(n!=0) {
    			m+=n%10*t;
    			n/=10;
    			t*=k;
    		}
    		n=m;
    		m=0;
    	}
    	t=0;
    	if(p!=10) {
    		while(n!=0) {
    			m=m*10+n%p;
    			n/=p;
    			t++;
    		}
    		m=rev(m,0);
    		t--;
    		bt=m;
    		while(t>0){
    			if(bt<10) m*=10;
    			else bt/=10;
    			t--;
    		}
    	} else m=n;
    	return m;
    }
    int jd_aikzp(int a,int k,int p) {
    	int n=a,m=0,t=1,bt=0,dm=0;
    	if(k==p) return a;
    	if(k!=10) {
    		while(n!=0) {
    			m+=n%10*t;
    			n/=10;
    			t*=k;
    		}
    		n=m; 
    	}
    	t=m=0;
    	if(p!=10) {
    		while(n!=0) {
    			m=m*10+n%p;
    			n/=p,t++;
    		}
    		while(m!=0) {
    			dm=dm*10+m%10;
    			m/=10;
    		}
    		bt=dm,m=0,t--;
    		while(t>0) {
    			if(bt<10) m*=10,t--;
    			else bt/=10,t--;
    		}
    	} else m=n;
    	return m;
    }
    long long jd_aikzp_longlong(long long a,long long k,long long p) {
    	long long n=a,m=0,t=1,bt=0,dm=0;
    	if(k==p) return a;
    	if(k!=10) {
    		while(n!=0) {
    			m+=n%10*t;
    			n/=10;
    			t*=k;
    		}
    		n=m; 
    	}
    	t=m=0;
    	if(p!=10) {
    		while(n!=0) {
    			m=m*10+n%p;
    			n/=p,t++;
    		}
    		while(m!=0) {
    			dm=dm*10+m%10;
    			m/=10;
    		}
    		bt=dm,m=0,t--;
    		while(t>0) {
    			if(bt<10) m*=10,t--;
    			else bt/=10,t--;
    		}
    	} else m=n;
    	return m;
    }
    int main(){
    	long long n,k,p;
    	printf("输入数:");
    	scanf("%d",&n);
    	printf("输入此数进制:");
    	scanf("%d",&k);
    	printf("输入转换后进制:");
    	scanf("%d",&p);
    	//aikzp(a,k,p)上面说过了,这里不说了
    	//jd_aikzp(a,k,p)上面说过了,这里不说了
    	//jd_aikzp_longlong(a,k,p)是long long版本的jd_aikzp函数,防止溢出的问题出现
    	printf("jd_aikzp_longlong函数执行结果:%d\n",jd_aikzp_longlong(a,k,p));
    	printf("jd_aikzp函数执行结果:%d\n",jd_aikzp(a,k,p));
    	printf("aikzp函数执行结果:%d\n",aikzp(a,k,p));
    	return 0;
    }
    

    c++:

    #include <iostream>
    using namespace std;
    int rev(int a,int od) {//颠倒数加强版函数
    	int n=a,m=0;
    	while(n!=0) {
    		m=m*10+n%10+od;
    		n/=10;
    	}
    	return m;
    }
    int aikzp(int a,int k,int p) {//进制转换 调用:[addb(待转换数字,待转换进制,生成进制)]
    	int n=a,m=0,t=1,bt=0;
    	if(k==p) return a;
    	if(k!=10) {
    		while(n!=0) {
    			m+=n%10*t;
    			n/=10;
    			t*=k;
    		}
    		n=m;
    		m=0;
    	}
    	t=0;
    	if(p!=10) {
    		while(n!=0) {
    			m=m*10+n%p;
    			n/=p;
    			t++;
    		}
    		m=rev(m,0);
    		t--;
    		bt=m;
    		while(t>0){
    			if(bt<10) m*=10;
    			else bt/=10;
    			t--;
    		}
    	} else m=n;
    	return m;
    }
    int jd_aikzp(int a,int k,int p) {
    	int n=a,m=0,t=1,bt=0,dm=0;
    	if(k==p) return a;
    	if(k!=10) {
    		while(n!=0) {
    			m+=n%10*t;
    			n/=10;
    			t*=k;
    		}
    		n=m; 
    	}
    	t=m=0;
    	if(p!=10) {
    		while(n!=0) {
    			m=m*10+n%p;
    			n/=p,t++;
    		}
    		while(m!=0) {
    			dm=dm*10+m%10;
    			m/=10;
    		}
    		bt=dm,m=0,t--;
    		while(t>0) {
    			if(bt<10) m*=10,t--;
    			else bt/=10,t--;
    		}
    	} else m=n;
    	return m;
    }
    unsigned long long jd_aikzp_unsignedlonglong(unsigned long long a,unsigned long long k,unsigned long long p) {
    	unsigned long long n=a,m=0,t=1,bt=0,dm=0;
    	if(k==p) return a;
    	if(k!=10) {
    		while(n!=0) {
    			m+=n%10*t;
    			n/=10;
    			t*=k;
    		}
    		n=m; 
    	}
    	t=m=0;
    	if(p!=10) {
    		while(n!=0) {
    			m=m*10+n%p;
    			n/=p,t++;
    		}
    		while(m!=0) {
    			dm=dm*10+m%10;
    			m/=10;
    		}
    		bt=dm,m=0,t--;
    		while(t>0) {
    			if(bt<10) m*=10,t--;
    			else bt/=10,t--;
    		}
    	} else m=n;
    	return m;
    }
    int main(){
    	unsigned long long n,k,p;
    	cout<<"输入数:";
    	cin>>n;
    	cout<<"输入此数进制:";
    	cin>>k;
    	cout<<"输入转换后进制:";
    	cin>>p;
    	cout<<"jd_aikzp_unsignedlonglong函数执行结果:"<<jd_aikzp_unsignedlonglong(a,k,p)<<endl;
    	cout<<"jd_aikzp函数执行结果:"<<jd_aikzp(a,k,p)<<endl;
    	cout<<"aikzp函数执行结果:"<<aikzp(a,k,p)<<endl;
    	return 0;
    }
    
    展开全文
  • 源代码来的,经过运行唔错的,想交作业或者懒得去计算的可以下载去玩玩
  • 作为一个半路出家的C/C++...C++内置的itoa是非常强大的,能够将十进制的int型转换任意进制的字符串输出,利用这一点,实际上任意进制的互相转换利用itoa以及设计一个函数来实现任意进制-》十进制的组合即可。。PS:

    作为一个半路出家的C/C++开发者,平日里最讨厌使用C++处理字符串以及处理类型转换的问题,不甚其烦。


    今天在做CVTE的笔试题的时候又遇到了进制转换 因此在这里对进制转换做一个总结吧。


    C++内置的itoa是非常强大的,能够将十进制的int型转换成任意进制的字符串输出,利用这一点,实际上任意进制的互相转换利用itoa以及设计一个函数来实现任意进制-》十进制的组合即可。。PS:C++中现在似乎推荐使用_itoa,itoa将会报错。


    贴上代码:

    long  toTen(char a[], int bit)
    		 {
    		     int length = strlen(a);
    		     int i, b = 1, sum = 0; //i要做数组a的下标,注意其起止范围 
    		     for (i = length - 1; i >= 0; i--)
    			     {
    			         if (a[i] >= 'A')
    				         {
    				             sum += (a[i] - 'A' + 10) *b;
    				             b *= bit;
    				         }
    			         else
    				         {
    				             sum += (a[i] - '0') *b;
    				             b *= bit;
    				         }
    			     }
    		     return sum;
    		 }
    以上为任意进制转换为10进制;

    int main()
    {
    	char s1[] = "E";
    	int a = toTen(s1, 16);
    	cout << a << endl;
    	char temp[200];
    	int b= 15;
    	_itoa(a, temp, 16);
    	cout << temp;
    	
    	system("pause");
    	return 0;
    }
    通过这样就实现了互相转换。



    展开全文
  • C++进制转换任意进制

    千次阅读 2018-11-28 09:34:11
    如上是将十进制转换1-16进制,并且有可能会输入负数 首先我们先考虑当输入的要转换的数为0,那么不管是任何进制,转换都是0. 然后考虑进制是否小于10,因为大于等于10之后的进制需要使用字符’A’-‘F’. 考虑进制...
  • 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;
  • # include # include using namespace std ...//这些都是为了能转化为十六进制。 default : cout s . top ( ) ; break ; } s . pop ( ) ; } return 0 ; }
  • 下面小编就为大家带来一篇c++10进制转换任意2-16进制数字的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • C++实现任意进制转换

    千次阅读 2014-11-23 19:24:45
    使用C++的STL的栈,实现2,8,10,16,36任意进制的数的转换。 思路是不管输入什么数,首先把它转换成10进制的数,再从十进制的数转换为别的进制。 #include "stdafx.h" #include "JinZhi.h" #include #include "math.h...
  • 任意进制转换10进制和10进制转换成任意进制 1 . 任意进制转10进制 原理 :输入是一个字符串,由函数体转换成数(考虑是否溢出int范围)。 #include<iostream> using namespace std; #include<algorithm>...
  • (其中b=2~16)算法分析记住这个方法:对于进制转换类问题,就是不断的余b模b。(b代表进制数的基数)具体步骤:重复执行①和步骤②,直到n为0结束。①取b进制数的个位:求余运算n%b,把结果存入数组。②将10进制数降一阶...
  • C++语言实现带小数的任意进制转换,使用了数据结构中的栈和队列,在VC++6.0上编译运行通过。对于学习C++和数据结构有一定的参考意义!
  • 它的功能是将一个任意1-36进制数转化为10进制数,传入字符串,返回是long int型。 函数为long int strtol(const char *nptr, char **endptr, int base) base是被转化的数的进制,非法字符会赋值给endptr,nptr是要...
  • 问题 A: 进制转换 时间限制:1 Sec内存限制:128 MB提交:67解决:28[提交][状态][讨论版] 题目描述 请你编一程序实现两种不同进制之间的数据转换。 输入 输入数据共有三行,第一行是一个正整数,表示需要转换的数...
  • C++ n进制转换10进制

    2019-10-08 20:24:19
    C++ n进制转换10进制 这一道题说实话也不是很难,只是转换一下思维,详细我会在代码中说。 #include<iostream> #include<cmath> #include<cstdio> #include<string> #include<cstring>...
  • 问题描述给定一个 M 进制的数 x,实现对 x 向任意的一个非 M 进制的数的转换。问题分析掌握不同数制间的转换关系是解决问题的关键,这里所说的数制一般包括二进制、八进制、十六进制及十进制。除了不同的数制还有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,369
精华内容 19,347
关键字:

c++任意进制转换

c++ 订阅