回复 10楼 自学的数学
没意义 就算都加了又如何还有1000进制 1000000000000进制
https://zh.
#include<iostream> #include<math.h> #include<string.h> using namespace std; int main() //任意进制转换为10进制 { char q[100];//定义q为字符串保存原数 long n=0;//定义转换成的十进制数为n int i,l,r=0,p,c,m=0,s[100]; //i为原进制数,l为字符串长度,r为次方数,p为转换后的任意进制数,c为余数,m,l用于计数,s存入转换后的数组 cout<<"输入要转化的数:"<<endl; cin>>q; cout<<"输入原数进制:"<<endl; cin>>i; cout<<"转换后的进制:"<<endl; cin>>p; l=strlen(q); strupr(q);//把字符串中字母全部大写,方便下一步计算 //将任意进制数转化为十进制数 for(l=l-1;l>=0;l--) {if(q[l]<='9')n=n+(q[l]-48)*pow(i,r++); else n=n+(q[l]-55)*pow(i,r++);} //十进制转换为任意进制 while(n!=0)//数制转换,结果存入数组s[m] { c=n%p; n=n/p; m++; s[m]=c; //将余数按顺序存入数组s[m]中 } for(int k=m;k>=1;k--)//输出转换后的序列 { if(s[k]>=10) //若为十六进制等则输出相对应的字母 cout<<(char)(s[k]+55); else //否则直接输出数字 cout<<s[k]; } cout<<endl; return 0; }
#include <stdio.h> int ToDecimal(const char* strSrc, long nSrcNum) { int nRes = 0; char arrValue[127] = ""; for(int i=0; i<10; ++i) arrValue[i + '0'] = i; for(int i=0; i<26; ++i) arrValue[i + 'A'] = i + 10; for(int i=0; strSrc[i]; ++i) { nRes = nRes * nSrcNum + arrValue[strSrc[i]]; } return nRes; } void ReverseStr(char* str, int nLen) { int i=0; while(i < nLen) { char tmp = str[i]; str[i] = str[nLen]; str[nLen] = tmp; ++i; --nLen; } } void Conversion(const char* strSrc, char* strDest, long nSrcNum, long nDestNum) { const char* strBase = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int nSrc = ToDecimal(strSrc, nSrcNum); int nIndex = 0; while(nSrc) { strDest[nIndex++] = strBase[nSrc % nDestNum]; nSrc /= nDestNum; } strDest[nIndex] = 0; ReverseStr(strDest, nIndex-1); } int main(int argc, char *argv[]) { char str[50]; Conversion("171", str, 10, 36); puts(str); return 0; }