c++实现的任意进制数转十进制数算法
2015-12-06 01:50
701 查看
#include <iostream> #include <cctype> using namespace std; int pow(int a,int b) { int ans=1; while(b--) ans*=a; return ans; } int radix1(string &a,int n) { int ans=0; for(int i=0;a[i];i++) { if(isdigit(a[i])) ans=ans*n+a[i]-'0'; else if(isupper(a[i])) ans=ans*n+a[i]-'A'+10+1; else if(islower(a[i])) ans=ans*n+a[i]-'a'+10+26+1; } return ans; } int radix2(string &a,int n) { int ans=0,ans0,len=a.size(); for(int i=len-1;i>=0;i--) { if(isdigit(a[i])) ans0=a[i]-'0'; else if(isupper(a[i])) ans0=a[i]-'A'+10+1; else if(islower(a[i])) ans0=a[i]-'a'+10+26+1; ans+=ans0*pow(n,len-i-1); } return ans; } void welcome() { cout<<"\t\t\t\t测试进制转换"<<endl; cout<<"\t\t\t\t\t\tBy:sdk2 QQ:469656392"<<endl<<endl<<endl; } int main() { welcome(); while(1) { int n; cout<<"输入进制(n≤62) "; cin>>n; cout<<"\t"<<"输入一个"<<n<<"进制的数 "; string a; cin>>a; cout<<"\t"<<"该数等于十进制的 "<<endl;; cout<<"\t"<<radix1(a,n)<<" (算法1)"<<endl; cout<<"\t"<<radix2(a,n)<<" (算法2)"<<endl<<endl<<endl; } return 0; }
相关文章推荐
- C语言成长学习题(三)
- C++11新特性之智能指针
- char 与 wchar_t 的互相转化
- C 标准库 abs 函数的实现
- B1048. 数字加密(20)
- C 标准库 atoi 函数的实现
- C语言成长学习题(二)
- assert.h
- error: ISO C++ forbids declaration of `FILE' with no type
- C语言--学习路径
- C++与Java
- C语言之typedef和define
- 趣味C语言
- 【C++】Visual Studio中动态申请二维数组,new二维数组
- 安装 Eclipse IDE for c/c++
- 线段树变形 568,1012
- C++的异常捕捉
- c++中多参数
- C语言程序设计整理(1)
- C语言之结构体