C语言实现十进制到任意进制转换

Leo
Leo
发布时间:2026-10-13| 5人浏览过
原创

介绍如何利用C语言基础语法实现十进制到二、八、十六进制等任意进制的转换,包含完整的可运行代码。

转换原理与准备

进制转换的核心逻辑基于“除基取余法”。对于十进制数 N,将其除以目标进制 w,所得余数即为当前位的数值,商继续参与下一轮运算,直到商为零为止。由于16进制中包含字母A-F,我们需要建立一个从0-15到对应字符的映射关系。char ku[16] 数组正是为此目的而设,它按顺序存储了 '0' 到 'F' 这16个字符。

第1步:定义变量与映射表

首先引入标准输入输出头文件 <stdio.h>。在主函数中,定义一个长度为16的字符数组 ku 用于映射十六进制以下的字符。同时声明两个数组或变量,zh[32] 用于暂存转换后的每一位余数,防止高位丢失;y 保存原始输入的十进制数以便后续打印,w 存储用户指定的目标进制。

#include<stdio.h>
int main()
{
 char ku[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
 int zh[32],i=0,w,j;
 long int b,y;
 // ... 后续输入逻辑
}

第2步:获取用户输入

程序启动后,提示用户输入一个十进制整数和想要转换的目标进制(例如2或16)。使用 scanf 分别读取这两个值存入 y 和 w。在开始计算前,建议先将 y 的值备份给 b,因为后续的除法运算会改变 y 的值,导致原始数据丢失。

 printf("请输入一个十进制数,我能帮您把它转换成2~16任意进制数:\n");
 scanf("%ld",&y); // 注意:原代码使用%d,建议改为%ld以匹配long int
 b=y;
 printf("请输入要转换为的进制:");
 scanf("%d",&w);
 printf("\n");
原文代码中 scanf("%d",&y) 存在格式说明符不匹配风险,因变量 y 为 long int,应使用 %ld 以避免未定义行为或栈溢出。已在重构中修正。

第3步:执行除基取余循环

使用 do-while 循环进行核心计算。只要 y 不为0,就执行以下操作:

  1. 将 y % w(即余数)存入索引为 i 的 zh 数组中。
  2. 将索引 i 加1,准备存储下一位。
  3. 将 y = y / w,更新被除数。
 do
 {
  zh[i]=y%w;
  i++;
  y=y/w;
 } while(y!=0); 

此循环结束后,zh 数组中从低地址到高地址依次存放的是原数的最低位到最高位。为了正确显示,我们需要逆序遍历该数组。

第4步:逆序输出结果

循环条件设置为 i-- 递减,直到索引小于0。每次取出 zh[i] 作为下标,访问 ku 数组得到对应的字符并打印。最后换行结束。

 printf("把十进制的%ld转换为%d进制:",b,w);
 for(i--;i>=0;i--)
 {
  j=zh[i];
  printf("%c",ku[j]);
 }
 printf("\n");
 return 0;

总结

这段代码展示了如何使用最基础的C语言特性完成进制转换。虽然功能简单,但它清晰地体现了算法逻辑。需要注意的是,原代码使用了 int 接收 long int 变量导致潜在的输入格式错误,实际使用时请确保格式占位符与变量类型一致。以上就是C语言实现十进制到任意进制转换的详细内容,更多关于C语言入门与基础算法的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。