标题:求一个能进制转换的程序
只看楼主
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
结帖率:80%
 问题点数:0 回复次数:5 
求一个能进制转换的程序
要求要输入各种进制的数,输出要求进制的数
希望大家帮忙想想
搜索更多相关主题的帖子: 进制 
2010-02-12 22:04
gtl75008810
Rank: 2
等 级:论坛游民
帖 子:29
专家分:71
注 册:2010-2-2
得分:0 
  如果就是二,八,十和十六进制转换的话,有一些现成的函数可以运用的。比如我记得有atoi()等。自己可以上网搜索一下。其实进制相互转换的过程可以运用移位操作比较容易的实现。
  提示到这里。下次再来如果你没有什么好的思路,我再发程序给你吧。
2010-02-17 21:49
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
得分:0 
程序代码:
// 将一个N进制数转换成M进制数 
 
#include <iostream> 

 
#include <vector> 

 
using namespace std; 

 
  

 
void convert(int x, int n, int m) 

 
{ 

 
    vector<int> vi; 

 
    int y; 

 
    while(x) 

 
    { 

 
        y = x % m; 

 
        vi.push_back(y); 

 
        x /= m; 

 
    } 

 
  

 
    vector<int>::reverse_iterator rit = vi.rbegin(); 

 
    for( ; rit!=vi.rend(); rit++) 

 
    { 

 
        if( *rit >= 10 ) 

 
        { 

 
            char temp = *rit - 10 + 'A'; 

 
            cout << temp; 

 
        } 

 
        else 

 
        { 

 
            cout << *rit; 

 
        } 

 
    } 

 
} 

 
  

 
void convert(const char *str, int n, int m) 

 
{ 

 
    if(*str == '\0') return; 

 
    int x = 0; 

 
    int y; 

 
    while(*str != '\0') 

 
    { 

 
        x *= n; 

 
        if((*str>='0') && (*str<='9')) 

 
        { 

 
            y = *str - '0'; 

 
        } 

 
        else if( (*str>='A') && (*str<='F') ) 

 
        { 

 
            y = 10 + *str - 'A'; 

 
        } 

 
        else if( (*str>='a') && (*str<='f') ) 

 
        { 

 
            y = 10 + *str - 'a'; 

 
        } 

 
        else 

 
        { 

 
            cout << "error input" << endl; 

 
            return; 

 
        } 

 
        if( y>=n )      // n进制数字不能大于n 
 
        { 

 
            cout << "error input" << endl; 

 
            return; 

 
        } 

 
        x += y; 

 
        str++; 

 
    } 

 
    convert(x, n , m); 

 
} 

 
  

 
int main(void) 

 
{ 

 
    convert(1234, 10, 16); 

 
    return 0; 

 
} 

 
2010-02-22 15:56
gtl75008810
Rank: 2
等 级:论坛游民
帖 子:29
专家分:71
注 册:2010-2-2
得分:0 
回复 3楼 秀痘魔导士
楼上的程序只能转换整数是不,如果含小数就不行了吧?
2010-02-22 22:38
bluecer
Rank: 2
等 级:论坛游民
帖 子:42
专家分:76
注 册:2007-4-25
得分:0 
就是计算机自带的计算器的那个功能?使用“运行”->“CALC”;
2010-02-22 23:18
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
得分:0 
以下是引用gtl75008810在2010-2-22 22:38:07的发言:

楼上的程序只能转换整数是不,如果含小数就不行了吧?
对的,但是方法差不多的
2010-02-25 09:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-297629-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.091658 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved