考研论坛

 
查看: 859|回复: 2
打印 上一主题 下一主题

[交流答疑] 哪位大神可以帮忙看一下这个编程题是怎么做的?求指教

[复制链接]

4

主题

22

帖子

68

积分

新手上路

Rank: 1

精华
0
威望
2
K币
66 元
注册时间
2017-8-28
跳转到指定楼层
楼主
发表于 2018-3-15 19:15 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先输入两个正整数,m(2<=m<=36)和n(2<=m<=36),然后输入一个m进制的数字串,将这个数字串转换为n进制并输出。如果进制超过9,那么用小写字母\'a\'到\'z\'依次表示10~35的数字。(假设数字串对应的十进制数用int存储不溢出)

源码

#include<iostream>
#include<string.h>
using namespace std;
int toTen(int m,char s[]) //将m进制的数字串转换为十进制并返回
{ int i,d = 1,num = 0;
for(i=strlen(s)-1;i>=0;i--){ //循环该数字串,将每一位上的位值和位权相乘,累加结果便为对应的十进制数
int t;
if(\'a\'<=s[i] && s[i]<=\'z\')
t = int(s[i]-\'a\'+10);
else t = int(s[i]-\'0\');
num+=t*d; d*=m;
}
return num; }
void toN(int num,int n,char ans[]) //将十进制数num转换为n进制数,并存储在ans数组中
{ int i=0; char temp[1100] = {0};
while(num){ //辗转相除法
int yu = num%n;
num/=n;
if(yu>9) temp[i++] = char(yu-10+\'a\');
else temp[i++] = char(yu+\'0\');
}
int len = i;
for(i=i-1;i>=0;i--) ans[len-i-1] = temp[i];
ans[len] = \'\\0\';
}
int main()
{ int m,n; char s[1100] = {0};
char ans[1100] = {0};
cin>>m>>n; //输入m和n,以及m进制的数字串 cin>>s;
int num = toTen(m,s); //将m进制的数字串转换为十进制数
toN(num,n,ans); //将十进制数转换为n进制数 cout<<ans<<endl; //输出转换后的结果
return 0; }

来自Android客户端

    回复

    使用道具 举报

    4

    主题

    73

    帖子

    206

    积分

    一般战友

    Rank: 2

    精华
    0
    威望
    2
    K币
    204 元
    注册时间
    2018-2-22
    沙发
    发表于 2018-3-15 19:24 来自手机 | 只看该作者
    答案都有了还问什么

    来自Android客户端

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    本版积分规则   

    关闭

    您还剩5次免费下载资料的机会哦~

    扫描二维码下载资料

    使用手机端考研帮,进入扫一扫
    在“我”中打开扫一扫,
    扫描二维码下载资料

    关于我们|商务合作|小黑屋|手机版|联系我们|服务条款|隐私保护|帮学堂| 网站地图|院校地图|漏洞提交|考研帮

    GMT+8, 2025-12-9 10:02 , Processed in 0.062506 second(s), Total 7, Slave 8(Usage:6.5M, Links:[2]1,1_1) queries , Redis On.

    Powered by Discuz!

    © 2001-2017 考研 Inc.

    快速回复 返回顶部 返回列表
    × 关闭