使用c语言顺序栈实现十进制转换为二进制,八进制和十六进制,写出完整源代码

时间: 2024-05-11 20:16:49 浏览: 14
以下是使用C语言顺序栈实现十进制转换为二进制、八进制和十六进制的完整源代码: ```c #include <stdio.h> #include <stdlib.h> #define STACK_MAX_SIZE 100 // 栈的最大空间 typedef struct { int data[STACK_MAX_SIZE]; int top; // 栈顶位置 } SeqStack; // 初始化栈 void initStack(SeqStack *s) { s->top = -1; } // 判断栈是否为空 int isEmpty(SeqStack *s) { return s->top == -1; } // 判断栈是否已满 int isFull(SeqStack *s) { return s->top == STACK_MAX_SIZE - 1; } // 入栈操作 void push(SeqStack *s, int x) { if (isFull(s)) { printf("栈已满,无法入栈!\n"); exit(1); } s->data[++s->top] = x; } // 出栈操作 int pop(SeqStack *s) { if (isEmpty(s)) { printf("栈已空,无法出栈!\n"); exit(1); } return s->data[s->top--]; } // 十进制转二进制 void dec2bin(int n) { SeqStack s; initStack(&s); while (n != 0) { push(&s, n % 2); // 将余数入栈 n /= 2; } printf("二进制为:"); while (!isEmpty(&s)) { printf("%d", pop(&s)); // 依次出栈 } printf("\n"); } // 十进制转八进制 void dec2oct(int n) { SeqStack s; initStack(&s); while (n != 0) { push(&s, n % 8); // 将余数入栈 n /= 8; } printf("八进制为:"); while (!isEmpty(&s)) { printf("%d", pop(&s)); // 依次出栈 } printf("\n"); } // 十进制转十六进制 void dec2hex(int n) { SeqStack s; initStack(&s); char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; while (n != 0) { push(&s, n % 16); // 将余数入栈 n /= 16; } printf("十六进制为:"); while (!isEmpty(&s)) { printf("%c", hex[pop(&s)]); // 依次出栈转为对应的十六进制字符 } printf("\n"); } int main() { int n; printf("请输入一个十进制数:"); scanf("%d", &n); dec2bin(n); dec2oct(n); dec2hex(n); return 0; } ``` 当您运行这份代码时,您将得到以下输出(当输入40时): ``` 请输入一个十进制数:40 二进制为:101000 八进制为:50 十六进制为:28 ``` 请注意,此代码仅在输入为正整数时有效。

相关推荐

最新推荐

recommend-type

C语言实现二进制文件读写详解

文章先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。
recommend-type

C语言中十六进制转十进制两种实现方法

主要介绍了C语言中十六进制转十进制两种实现方法的相关资料,需要的朋友可以参考下
recommend-type

C语言实现进制转换函数的实例详解

主要介绍了C语言实现进制转换函数的实例详解的相关资料,这里提供实现实例帮助大家实现改功能,需要的朋友可以参考下
recommend-type

C语言实现文本文件/二进制文件格式互换

主要为大家详细介绍了C语言实现文本文件和二进制文件格式互换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

单片机C语言程序设计:T0控制LED实现二进制计数

名称:T0 控制 LED 实现二进制计数 说明:本例对按键的计数没有使用查询法,没有使用外部中断函数,没有使用定时或计数中断函数。而是启用了计数器,连接在 T0 引脚的按键每次按下时,会使计数寄存器的值递增,其值...
recommend-type

STC89C51 简单时钟

STC89C51 简单时钟,叫你从基础开始学习单片机,
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?

![MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?](https://www.finebi.com/wp-content/uploads/2019/11/FineBI%E8%A1%8C%E4%B8%9A%E9%A9%BE%E9%A9%B6%E8%88%B1-1024x510.png) # 1. MATLAB归一化概述 归一化是一种数据预处理技术,用于将数据缩放到特定范围内,从而消除不同特征之间的尺度差异。在MATLAB中,有各种归一化方法可用于不同类型的数据和应用程序。 归一化的主要目的是: - 提高模型的训练效率和准确性,通过消除特征之间的尺度差异,使模型能够更有效地学习
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

Linux系统常用操作命令大全手册

附件是Linux系统常用操作命令大全手册,是 markdown格式,其中覆盖了Linux系统管理、文件操作、网络配置等多个方面,都是日常工作中非常常用的命令,欢迎大家下载学习使用!