----------------------✨🎉🎈==!!!热烈欢迎各位大佬!!!==🎈🎉✨---------------------
🍹作者: BooleanChar12
✨博客主页: BooleanChar12的博客
💘很喜欢的一句话: Because we all stand on the shoulders of giants.
🥂如有bug和疑惑欢迎大家与我🤺
😍觉得博主文章写的不错的话,希望大家三连(🎉关注,🎉点赞,🎉评论),多多支持一下!!
--------------------------------------------------------------------------🍻==专栏回顾==🍻-------------------------------------------------------------------------------
☕Java(从入门到放弃) 🍉数据结构(从放弃到入门) 🍒Android开发(从入门到入土) 🍇计算机组成原理(从1到0) 🍑计算机网络(从上网到退网) 🥝操作系统(从0到0.1) 🍎C语言练习题 🏆Leetcode(狂刷笔记) 🌺微信小程序开发日记
1.注意事项🔊:
注:经测试,发现字符串长度为4,5,6位无法正确识别,其他均可,原因尚未找出…
原因找到:在出栈给output[]赋值后,没有手动给output[]赋值’\0’
解决办法:在47~48行之间添加一句:
output[j] = '\0';
即可
2.思路分析💡:
-
获得用户要转换的数
- scanf函数接收用户输入
-
获得用户要将此数转换为几进制的数
- scanf函数接收用户输入
-
开始转换(调用进制转换函数)
- 初始化栈(即创建一个空栈)
- while循环将每次取模的结果压入栈中
- 遍历栈中元素
思考:如何考虑16进制遍历输出时有字母的特殊性?
在C语言中,由于ASCII码表的存在,字符本质也是数字,于是我们可以利用这一点,在入栈和输出上进行控制,将16进制的字母A,B,C,D,E,F入栈和输出,具体操作看代码实现。
-
结束程序
3.代码实现💎:
# include <stdio.h>
# include <malloc.h>
//定义栈结构体
struct Stack {
int * top;//栈顶指针
int * base;//栈底指针
int size;//栈大小
};
//初始化栈
void initStack(struct