| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 123 人关注过本帖
标题:请问这道任意进制转换应该怎么做呢,希望有人能帮个忙
只看楼主 收藏
进击的种子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-12-29
结帖率:50%
  已结贴   问题点数:10  回复次数:3   
请问这道任意进制转换应该怎么做呢,希望有人能帮个忙
题目描述
进制转换(二)

输入K进制的正整数N,请把N化为L进制后输出。(N<1000000;L,K<=16)
有多组数据。
输入格式:
K N L

输入
 

输出
 

样例输入
8 10  2
10 10 16
样例输出
1000
A
提示










我已经做了一段程序,不知道如何把十进制以上转成十进制。
2018-03-25 21:15
进击的种子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-12-29
  得分:0 
这是我编的:
大家可以忽略
或者在这上面完善一下哦
#include<cstdio>
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int k,n,l,x;//x用于存储n的实际的十进制和
    int n1[100],a[100];
    int j,i,s=0;
    cin>>k>>n>>l;
    if(n>=1000000||k>16||l>16){return 0;}
    int o=n;
    int oo=n;
        while(cin>>k>>n>>l)
        {
            while(n){n=n/10;s++;}
                while(o)
        {
                for(i=0;i<s;i++)
               {
                   n1[i]=o%10;
                   o=o/10;
            }
        }
        if(s==1)
        {
            x=oo*pow(k,1);
        }
        if(s==2)
        {
            x=n1[0]*pow(k,0)+n1[1]*pow(k,1);
        }
            if(s==3)
        {
            x=n1[0]*pow(k,0)+n1[1]*pow(k,1)+n1[2]*pow(k,2);
        }
            if(s==4)
        {
            x=n1[0]*pow(k,0)+n1[1]*pow(k,1)+n1[2]*pow(k,2)+n1[3]*pow(k,3);
        }
            if(s==5)
        {
            x=n1[0]*pow(k,0)+n1[1]*pow(k,1)+n1[2]*pow(k,2)+n1[3]*pow(k,3)+n1[4]*pow(k,4);
        }
            if(s==6)
        {
            x=n1[0]*pow(k,0)+n1[1]*pow(k,1)+n1[2]*pow(k,2)+n1[3]*pow(k,3)+n1[4]*pow(k,4)+n1[5]*pow(k,5);
        }
            int oooo=x;
            j=0;
                    while(oooo)
                  {
                      a[j]=oooo%l;
                       oooo/=l;
                       j++;
                }
              for(oooo=j-1;oooo>=0;oooo--)
               if(a[oooo]>=10)cout<<char(a[oooo]+55);
               else
            cout<<a[oooo];
            cout<<endl;
        }  
   return 0;
}
2018-03-25 21:16
进击的种子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-12-29
  得分:0 
有人帮忙吗
2018-03-25 21:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:236
帖 子:5491
专家分:30748
注 册:2011-1-18
  得分:10 
不同已有的库函数的方法
程序代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

std::string K_to_L( unsigned K, const std::string& N, unsigned L )
{
    // K进制的字符串N 转化为数值value
    unsigned value = 0;
    for( size_t i=0; i!=N.size(); ++i )
    {
        if( N[i] <= '9' )
            value = value*K + (N[i]-'0');
        else
            value = value*K + (N[i]-'A'+10);
    }

    // 数值value 转化为L进制的字符串str
    std::string str;
    for( ; value!=0; value/=L )
    {
        if( value%L <= 9 )
            str.push_back( value%L + '0' );
        else
            str.push_back( value%L-10 + 'A' );
    }
    std::reverse( str.begin(), str.end() ); // 反序
    if( str.empty() )
        str.push_back( '0' );
    return str;
}

int main( void )
{
    unsigned K, L;
    std::string N;
    for( ; cin>>K>>N>>L; )
    {
        cout << K_to_L(K,N,L) << endl;
    }
}


2018-03-26 08:46







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

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