m进制转为n进制(0<m,n<=10)
2015-05-31 20:51
239 查看
首先,将m进制转为10进制,然后在将10进制转为n进制;(都用辗转相除法)
说明:m和n都是10以内的数,如果大于10需要涉及到字母,可以在准换中进行判断,例如
将10进制转化为n时,可以参考另一篇:/article/8590914.html
#include <iostream> using namespace std; void mToN(char* src, int m, char* dest, int n); void reverseString(char *s); int main() { char A[100] = { 0 }; mToN("35", 10, A, 10); puts(A); } /* src为m进制字符串 m为原进制 dest为目的字符串 n为目的进制 */ void mToN(char* src, int m, char* dest, int n) { if (src == NULL) { return; } int count = 0; char* tmp = dest; //不能改变首地址 //先转化为10进制,逆着辗转相除 while (*src != '\0') { count = count*m + *src - '0'; src++; //直到字符串读完 } int length = 0; //辗转相除,转为n进制,逆着存储 while (count != 0) { *tmp = count%n + '0'; count /= n; tmp++; } // puts(dest); //逆过来 reverseString(dest); } /* 字符串逆序 */ void reverseString(char *s) { char* p = s; //p指向字符串头部 //q指向字符串尾部 char* q = s; while (*q) { q++; } q--; //指向最后一位 while (q > p) { char ch = *q; *q = *p; *p = ch; p++; q--; } }
说明:m和n都是10以内的数,如果大于10需要涉及到字母,可以在准换中进行判断,例如
if(*src == 'A') { int a = 11; count = i*m + a; }
将10进制转化为n时,可以参考另一篇:/article/8590914.html
相关文章推荐
- 第十二周项目二--摩托车继承自行车和机动车
- 构建之法之软件工程
- 使用HIGHCHARTS绘制服务端返回数据曲线图
- 关于51单片机电子时钟精度的问题
- 黑马程序员_多线程
- 关于51单片机电子时钟精度的问题
- input text的提示信息
- Spring MVC 使用陷阱
- 第十二周上机项目4 点,圆的关系
- 【ZMYC】第2篇:资源路径和下载
- hdu 5256
- OC中: Init methods must return a type related to the receiver type
- Qt移植 Window --Linux
- VMware中网络设置之host-only
- Android的ExpandableListView-android学习之旅(二十八)
- Android的ExpandableListView-android学习之旅(二十八)
- Android的ExpandableListView-android学习之旅(二十八)
- 作为DBA如何表达你对女神的爱?
- 第十二周项目一--教师兼干部类
- 开源Asp.net CMS mojoPortal-源码运行