| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1187 人关注过本帖
标题:求一个能进制转换的程序
只看楼主 加入收藏
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
快速回复:求一个能进制转换的程序
数据加载中...
 
   



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

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