前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言编写实用小工具,任意进制数转换【附源码】

C语言编写实用小工具,任意进制数转换【附源码】

作者头像
C语言中文社区
发布2022-05-31 08:29:07
7330
发布2022-05-31 08:29:07
举报
文章被收录于专栏:C语言中文社区

今天我们用C语言编写一个小工具,实现任意进制数(2-16进制)转换为其他任意进制数(2-16进制)

运行结果演示

代码实例

代码语言:javascript
复制
/**
 * @author: 冲哥
 * @date: 2020/12/16 21:20
 * @description:数字进制转换小工具
 */
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//微信关注公众号【C语言中文社区】,免费领取200G精品学习资源
//将输入的数字转换成10进制数
int convert_to_decimal(char arr[], int initial)
{
    int len, i, num;
    int sum = 0;
    len = strlen(arr);//求得字符串长度
    for (i = 0; i < len; i++)
    {
        if (arr[i] >= '0' && arr[i] <= '9')
            num = arr[i] - '0';
        else if (arr[i] >= 'A' && arr[i] <= 'F')
            num = arr[i] - 'A' + 10;
        sum = sum * initial + num;
    }
    return sum;
}

//将转换好了的10进制数转换为所需进制数
void decimal_to_want(int decimalNum, int target)
{
    int targetNum;
    if (decimalNum)
    {
        decimal_to_want(decimalNum / target, target);
        targetNum = decimalNum % target;
        if (targetNum < 10)
            printf("%d", targetNum);//小于10直接输出
        else
            printf("%c", targetNum + 55);//大于10转换成字符输出
    }
}
int main()
{
    int initial;//待转化数的进制
    int target;//转换后的进制
    char num[20];//待转换数

    do {
        printf("请输入待转换数的进制(2-16):");
        scanf_s("%d", &initial);
    } while (initial < 2 || initial > 16);
    printf("请输入待转换数:");
    getchar();
    gets_s(num, 20);//将输入的n进制数存放在数组a中
    int decimalNum = convert_to_decimal(num, initial);//将输入的数字转换成十进制数
    do {
        printf("请输入需要转成几进制数(2-16):");
        scanf_s("%d", &target);
    } while (initial < 2 || initial > 16);
    printf("%d进制数%s转换为%d进制数的结果为:",initial,num,target);
    decimal_to_want(decimalNum, target);//将十进制数转换为所需进制数
    printf("\n");
    system("pause");
    return 0;
}

测试数据

请输入待转换数的进制(2-16):2

请输入待转换数:1024

请输入需要转成几进制数(2-16):8

2进制数1024转换为8进制数的结果为:20

-------------------------------------------------

请输入待转换数的进制(2-16):8

请输入待转换数:2000

请输入需要转成几进制数(2-16):2

8进制数2000转换为2进制数的结果为:10000000000

-------------------------------------------------

请输入待转换数的进制(2-16):2

请输入待转换数:10000000000

请输入需要转成几进制数(2-16):10

2进制数10000000000转换为10进制数的结果为:1024

-------------------------------------------------

请输入待转换数的进制(2-16):10

请输入待转换数:1024

请输入需要转成几进制数(2-16):5

10进制数1024转换为5进制数的结果为:13044

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运行结果演示
  • 代码实例
  • 测试数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档