`

C语言通过栈将十进制数转为八进制数

 
阅读更多

//VC6.0下运行通过

#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
#define ERROR 0
#define OVERFLOW -2
#include <stdio.h>

typedef int SElemType;
typedef struct {
SElemType *base;// 在栈构造之前和销毁之后,base 的值为NULL
SElemType *top;// 栈顶指针
int StackSize; //当前已分配的存储空间,以元素为单位
}SqStack;

//初始化栈
void InitStack(SqStack *s)
{
s->base =(SElemType*)malloc (STACK_INIT_SIZE * sizeof(SElemType));
if(!s->base) exit(OVERFLOW);
s->top=s->base;
s->StackSize= STACK_INIT_SIZE;
}

// 压人栈
void Push(SqStack *s,SElemType e)
{
if (s->top-s->base>=s->StackSize){ //栈满,追加存储空间
s->base=(SElemType *) realloc (s->base,(s->StackSize+STACKINCREMENT)*sizeof(SElemType));

if(!s->base) exit(OVERFLOW);//若内存中没有s->StackSize+STACKINCREMENT个连续空间则分配失败
s->top=s->base+s->StackSize;
s->StackSize+=STACKINCREMENT;
}
*s->top++ =e;
}

//弹出栈
int Pop(SqStack *s,SElemType *e)
{
if (s->top==s->base) return ERROR;
s->top=s->top-1;
*e = *s->top;
}
//判空栈
int StackEmpty(SqStack s)
{
if (s.top ==s.base)
{
return 1;
}
else
{
return 0;
}

}

void Conversion(int N)
{
SElemType e;
SqStack s;

InitStack(&s);
while(N){
Push(&s,N%8);
N= N/8;
}
printf("转换后的八进制数为:");
while(StackEmpty(s)!=1)
{
Pop(&s,&e);
printf("%d",e);
}
printf("\n");

}

void main()
{
int n;
printf("请输入一个十进制数:");
scanf("%d",&n);
Conversion(n);
}

分享到:
评论

相关推荐

    C语言-顺序栈实现十进制转换为二进制-八进制-十六进制

    本篇文章将详细介绍如何使用C语言中的顺序栈来实现十进制数字向二进制、八进制以及十六进制的转换。通过分析给出的代码示例,我们将深入了解其工作原理,并探讨每一步操作的具体实现细节。 #### 二、基础知识 在...

    顺序栈、链栈将10进制转为2、8、16进制源码

    本话题聚焦于一种特定的应用——使用C++实现的顺序栈和链栈,将10进制数转换为2、8、16进制。这里我们将深入探讨顺序栈和链栈的概念,以及它们如何应用于不同进制之间的转换。 首先,顺序栈是一种基于数组的数据...

    栈的应用3——进制转化_栈;进制转换_

    通过熟练运用栈的操作,可以扩展到其他进制之间的转换,如十进制到八进制或十六进制。 对于八进制转换,每次除8取余;对于十六进制,每次除16取余。余数对应于0到7(八进制)或0到F(十六进制)的数字,这些数字...

    十六进制转化为十进制(C编写,附代码)

    在C语言中,我们可以通过以下步骤将十六进制数转换为十进制数: 1. **定义输入字符串**:首先,我们需要一个字符串来存储十六进制数。十六进制数通常以"0x"或"0X"开头,但这个前缀在进行转换时并不重要。因此,我们...

    一款简易的进制转换工具(十进制转为2、8、16进制)

    在这个场景中,我们讨论的是一款用C语言编写的简易进制转换工具,它能够帮助用户将十进制数转换为二进制、八进制和十六进制。下面我们将详细探讨这些进制系统以及转换过程。 首先,让我们了解什么是进制。进制是...

    C语言实全进制互转.pdf

    - 同样,可先转为十进制或二进制,再转为八进制。 文档中还提到了程序设计的思路,包括使用子函数分别处理不同进制的转换,主函数调用这些子函数来完成整个转换过程。程序框图或流程图未提供,但通常会包含用户...

    STM32数据进制转换程序,移植方便

    在STM32的开发过程中,常常需要处理不同进制之间的数据转换,例如将二进制、八进制、十进制和十六进制等进行相互转换。这个“STM32数据进制转换程序”就是专为此目的设计的,它可以方便地在各种进制之间进行快速、...

    进制转换C语言的实现.pdf

    二进制转八进制或十六进制时,通常会将二进制数分组,每3位转为一位八进制,每4位转为一位十六进制。例如,二进制数11001转换为八进制为31,转换为十六进制为7。 八进制和十六进制转换到其他进制,同样遵循类似的...

    c语言_各种进制转换

    利用C语言进行任意进制数据之间的转换。十进制转为二进制,八进制,16进制。相反的也可以。

    C语言程序设计.docx

    1. **十进制转二进制**:在C语言中,将十进制数转换为二进制通常通过先转为八进制再转为二进制的方法。首先,将十进制数除以8得到商和余数,直至商为0,然后将余数逆序排列,即可得到八进制数。接着,每个八进制位...

    进制转化库

    1. **二进制转十进制**:通过计算二进制每一位的权重,将二进制数转换为十进制数。 2. **十进制转二进制**:使用除2取余法,将十进制数转换为二进制数。 3. **八进制转十进制**:通过计算八进制每一位的权重,转换为...

    进制转换.rar

    这样的函数可能包括两个主要部分:将十进制转为其他进制的`dec_to_base`和将其他进制转为十进制的`base_to_dec`。在`dec_to_base`中,可以使用上述的手动转换方法;在`base_to_dec`中,需要解析输入字符串并进行相应...

    利用c语言实现的数制转换课程设计报告

    在C语言中,我们可以通过编程实现不同数制之间的转换,包括二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)之间的转换。 1. **二进制转十进制** 在C语言中,可以使用`bin2dec()`...

    1——16内任意进制值转换

    - `printf`函数可以使用`%x`或`%X`格式化输出十六进制数,`%o`用于八进制,`%d`或`%i`用于十进制,`%b`用于二进制。 - `scanf`函数可以使用`%i`配合`base`参数读取任意进制的数,但需要额外的代码来处理非十进制...

    数据结构课程设计_进制转换.doc

    - **进制转换算法**:开发将十进制转为其他进制以及将其他进制转回十进制的算法。这可能涉及到除法和取余运算,以及对高进制字符的映射处理。 - **输入验证**:确保用户输入的有效性,如检查输入的进制范围。 - **...

    C语言实现将字符串转换为数字的方法

    `atoi()`函数只处理基本的十进制数字,如果字符串中包含非数字字符,它会忽略这些字符直到找到数字或者到达字符串末尾。如果整个字符串都不能转换为有效的整数,`atoi()`会返回0。 除了`atoi()`之外,C语言还提供了...

    C++课后答案,谭浩强第二版课后答案

    8. 十进制数21003转为八进制为51013,十六进制为520B。 这些转换可以通过手动计算或编写程序来完成。对于负数的转换,通常采用补码表示法进行处理。 ##### 2.7 字符编码示例 该示例展示了如何通过修改字符的ASCII...

    2022山西专升本C语言知识点总结

    1. 常量包括整型、实型和字符型,如134(十进制)、034(八进制)、1.3(双精度浮点数)、'a'(字符)等。 2. 实型常量的指数表示法中,e前后必须有数字,e后的数字必须为整数。 3. 字符常量可以是普通字符或转义字符,如'\n...

    C语言编程练习题绝对经典!(DOC).doc

    (以 2,10 进制互转为例,其他请举一反三:二进制数 1101 转十进制:1×2 的三次幂+1×2 的二次幂+0×2 的一次幂+1×2 的零次幂=8+4+0+1=13) 这个问题考察了数组操作的能力,以及不同进制之间的转换。 ...

    数据结构及算法经典源程序集(c语言)

    5. **求进制**:转换数字的进制是计算机科学中的基本任务,这里可能包括十进制到二进制、八进制或十六进制的转换。理解不同进制系统对于计算机内部工作原理的理解至关重要。 6. **数组**:数组是最基本的数据结构之...

Global site tag (gtag.js) - Google Analytics