「今天是学习C语言第 156 天」
纸上学来终觉浅,绝知此事要躬行。—— 陆游「冬夜读书示子聿」# 基本功能
利用栈实现十进制转任意进制,包括二进制、八进制、十六进制。
实现要点:利用栈后进先出的特性,为简单起见,这里使用数组模拟顺序栈实现。
备注:数组实现有最大长度限制,实际问题中,请根据前面该文章实现顺序栈。
进制转换基本公式:N表示十进制数,b表示进制。
N = (N/b)*b + N%b 。
# 代码运行结果
十进制数100转16进制后:64
十进制数1000转2进制后:1111101000
十进制数1000转8进制后:1750
十进制数1000转16进制后:3E8
# 代码简单实现
/* ========================================== 名称 :C语言实现常用数据结构 功能 :十进制转任意进制-顺序栈应用 示例 :例如十进制100转为八进制144、十六进制64 环境 :Windows 10 + Dev-C++编译 作者 :一只会C的猫 公众号 :C语言大全(coderpointer) 时间 :2020.8.20 ==========================================*/#include // 使用数组实现顺序栈// 进制转换后最大位数#define MAX_SIZE 1000// base表示进制,取值2,8,16// 分别表示二进制、八进制、十六进制 void convert(int number, int base){ printf("十进制数%d转%d进制后:", number, base); int stack[MAX_SIZE]; int top = -1; do { stack[++top] = number % base; number /= base; }while(number != 0); int t; while(top > -1) { // 对十六进制特殊处理 t = stack[top--]; if(t < 10) printf("%d", t); else printf("%c", 'A'+t-10); } printf("\n");} int main(void){ convert(0, 2); convert(100, 2); convert(100, 8); convert(100, 16); convert(1000, 2); convert(1000, 8); convert(1000, 16); return 0;}
---------- End ----------
往期精彩推荐:
一万分钟C语言学习计划:2020开篇
C语言内存管理的两种方式
C89标准库功能简介
C语言链接与存储类型
C语言标准输入输出
C语言入门基本语法
更多请点击公众号历史文章...
「喜欢C请赏个 赞 点击右下角 在看」