P1143 进制转换(C语言)

P1143 进制转换

在这里插入图片描述

1.思路

核心思路:先把输入的转化为10进制数,然后再转化为所需要的进制
1.将该进制数转化为十进制数需要乘该进制数,再代码中则要逆序转换
在这里插入图片描述
2.题目中还有要注意的地方输入的为字符而不是数字时,需要转化数值的大小,用到的
函数isdigit(a) 判断输入的字符串是否为整数

   if(isdigit(a[i]))//isdigit是判断是不是字符型 整型 数组的函数
            b[i] = a[i] - '0';//转换成数
        else//是字母
            b[i] = (a[i] - 'A') + 10;//转换成数,记得 + 10

3.转换为十进制

    int len1 = i;//i出来之后就是长度
    for(i = len1 - 1; i >= 0; i -- ) {//倒着算出转换成十进制后是多少      长度为len1,但下标减一
        sum += b[i] * time;//乘以每一位十进制的值是多少
        time *= n;//不要忘记*n哦
    }

4.转换为所需要的进制n,则需要除n取余法
在这里插入图片描述

  int len2 = 0;//转换成m进制时用来表示下一位放在哪里的指针
    
    while(sum >= 1) {//只要还没除完
        c[len2] = sum % m;
        sum /= m;
        len2 ++ ;
    }

2.源码

#include <stdio.h>
#include <ctype.h>
int main () {
    
    int n, m, i, sum = 0, time = 1;//sum是用来存放转换成十进制后的数
    char a[30];//输入的数组
    int b[30];//存放每一位转换成数是多少的数组
    int c[30];//转换成m进制后存放的数组
    
    scanf("%d%s\n%d", &n, a, &m);
    for(i = 0; a[i]; i ++ )//上面的链接解释了为什么要这样遍历数组
        if(isdigit(a[i]))//isdigit是判断是不是字符型数组的函数
            b[i] = a[i] - '0';//转换成数
        else//是字母
            b[i] = (a[i] - 'A') + 10;//转换成数,记得 + 10
    
    int len1 = i;//i出来之后就是长度
    for(i = len1 - 1; i >= 0; i -- ) {//倒着算出转换成十进制后是多少
        sum += b[i] * time;//乘以每一位十进制的值是多少
        time *= n;//不要忘记*n哦
    }

    int len2 = 0;//转换成m进制时用来表示下一位放在哪里的指针
    
    while(sum >= 1) {//只要还没除完
        c[len2] = sum % m;
        sum /= m;
        len2 ++ ;
    }
    
    for(int i = len2 - 1; i >= 0; i -- )//倒着输出
        if(c[i] < 10) printf("%d", c[i]);//是数字
        else printf("%c", c[i] - 10 + 'A');//是字母
    return 0;
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ღ江晚吟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值