C语言实现任意进制转换器

C语言实现任意进制转换器的攻略如下:

介绍

进制转换是计算机科学中的一个基本问题。通常我们使用十进制作为计算的基础,但在某些场合下,如计算机领域中,可能需要十六进制或二进制来表示数据。因此,实现任意进制转换器是非常有用的。

操作步骤

实现任意进制转换器,需要以下的步骤:

  1. 输入要转换的数和当前进制;
  2. 将输入的数转换为十进制;
  3. 将十进制数转换为目标进制;
  4. 输出结果。

下面是示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 将字符转换为相应的数字,如'A'对应10,'B'对应11
int digit_to_num(char c)
{
    if (c >= '0' && c <= '9')
        return c - '0';
    else if (c >= 'A' && c <= 'Z')
        return c - 'A' + 10;
    else if (c >= 'a' && c <= 'z')
        return c - 'a' + 10;
    else
        return -1;
}

// 将十进制数转换为目标进制,返回字符串形式的结果
char *convert(long long num, int base)
{
    char conversion[] = "0123456789ABCDEF";
    char result[100];
    int i = 0;

    while (num > 0)
    {
        result[i++] = conversion[num % base];
        num /= base;
    }
    result[i] = '\0';

    char *output = malloc(strlen(result) + 1);
    strcpy(output, result);
    strrev(output);

    return output;
}

int main()
{
    char input[100];
    int base1, base2;
    long long num = 0;
    int i, digit;

    printf("请输入要转换的数和当前进制:");
    scanf("%s %d", input, &base1);

    int len = strlen(input);
    for (i = 0; i < len; i++)
    {
        digit = digit_to_num(input[i]);
        if (digit < 0 || digit >= base1)
        {
            printf("输入错误!\n");
            return -1;
        }
        num = num * base1 + digit;
    }

    printf("请输入目标进制:");
    scanf("%d", &base2);

    if (base2 < 2 || base2 > 36)
    {
        printf("目标进制应在2-36之间!\n");
        return -1;
    }

    char *output = convert(num, base2);
    printf("%s\n", output);

    free(output);
    return 0;
}

示例

示例1

将二进制数10011011转换为十六进制:

请输入要转换的数和当前进制:10011011 2
请输入目标进制:16
9B

可以看到,输入的二进制数10011011被转换为十进制155,再转换为十六进制9B。

示例2

将十进制数1234转换为八进制:

请输入要转换的数和当前进制:1234 10
请输入目标进制:8
2322

可以看到,输入的十进制数1234被转换为八进制2322。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现任意进制转换器 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Recommended C Style and Coding Standards中文翻译版

    首先,需要明确“Recommended C Style and Coding Standards”是一份由美国国防部发布的规范文档,旨在规范C语言程序的编写。该文档包含了C语言编程所需的规范、风格、注释、命名、代码布局和格式等方面的建议。如何应用该文档,建立自己的编程风格呢? 以下是应用“Recommended C Style and Coding Stan…

    C 2023年5月22日
    00
  • java异常:异常处理–try-catch结构详解

    Java异常: 异常处理–try-catch结构详解 在Java程序中,异常处理是一个非常重要的方面。Java异常是指程序在运行期间不正常的情况。当程序出现异常时,如果没有恰当的处理,它将使程序崩溃。Java提供了异常处理机制来解决这个问题。 异常 当Java程序在运行过程中遇到了异常时,它会产生一个异常对象。Java中的异常有两种类型: 检查异常和非检查…

    C 2023年5月23日
    00
  • C语言链表实现商品库存管理系统

    C语言链表实现商品库存管理系统 简介 链表是一种常见的数据结构,优点是可以在任意位置插入或删除元素,而不影响链表中其他元素。因此,链表在一些需要频繁插入或删除元素的场景中非常适用,比如实现商品库存管理系统。 本文将使用C语言来实现链表,并借此来实现一个简单的商品库存管理系统。在该系统中,我们可以添加商品(包括名称、价格和数量),查看商品,删除商品,以及修改商…

    C 2023年5月23日
    00
  • Java Exception异常全方面分析

    Java Exception异常全方面分析 Java中异常是程序运行中发生的错误或者异常情况的标志,有时我们无法避免由于代码本身的错误或者外在因素导致程序发生异常。因此,掌握异常的相关知识,在开发过程中是非常必要的。 本文将全方面地讲解Java中异常的相关知识,包括异常的类型、异常处理、异常抛出与捕获等内容,旨在帮助Java开发者更好地理解和使用异常。 异常…

    C 2023年5月23日
    00
  • C语言文件操作零基础新手入门保姆级教程

    C语言文件操作零基础新手入门保姆级教程 文件操作概述 文件操作是指对文件进行读写、复制、移动、重命名等操作的过程。C语言中提供了丰富的文件操作函数,使得开发者可以轻松地实现文件的操作。 C语言文件操作的基本流程为: 打开文件 进行读/写操作 关闭文件 文件操作函数 打开文件 fopen()函数用于打开文件,函数定义如下: FILE *fopen(const …

    C 2023年5月23日
    00
  • 使用python获取cpu每秒的使用率

    下面是详细讲解“使用python获取cpu每秒的使用率”的完整攻略。 1. 确认获取CPU使用率的目标平台和Python版本 在开始之前,我们需要确认我们要获取CPU使用率的平台和Python版本。因为不同的平台和Python版本可能有不同的获取方式。例如,Windows和Linux下获取CPU使用率的方式可能就不一样,Python 2.x和Python 3…

    C 2023年5月23日
    00
  • C语言怎么获得进程的PE文件信息

    要获取进程的PE文件信息,可以使用Windows的API函数和一些常用的数据结构。 首先需要使用OpenProcess函数打开目标进程,该函数会返回目标进程的句柄,用于后续的操作。然后再使用GetModuleInformation函数获取目标进程的所有模块信息,包括PE文件的基址、大小等信息。最后需要使用CloseHandle关闭进程句柄以释放资源。 以下是…

    C 2023年5月23日
    00
  • C++实现教职工信息管理系统

    C++实现教职工信息管理系统攻略 1. 确定需求 在开始编写代码之前,我们需要确定该教职工信息管理系统的需求,包括需要实现哪些功能、输入输出的格式等。 该系统需要实现的功能包括: 添加教职工信息 删除教职工信息 修改教职工信息 查询教职工信息 显示所有教职工信息 教职工信息需要包括: 姓名 工号 职称 部门 输入格式为: 添加教职工信息:姓名 工号 职称 部…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部