原理:
首先在栈底放入哨兵,接着用算法求出余数,把余数依次放入栈中, 然后取栈顶元素,并且出栈栈顶元素。

//十进制转八进制
#include"stdio.h"
#include"stdlib.h"
#define maxsize 100
typedef struct
{int data[maxsize];int top;
}link;void initializa(link *s)//初始化函数
{s->top=0;
}int empty(link *s)//判栈空函数
{if(s->top==0)return 1;elsereturn 0;
}int enter(link *s,int x)//进栈函数
{if(empty(s)==maxsize-1){printf("此栈已满\n");return 0;}else{s->top++;(s->data)[s->top]=x;}return 1;
}int out(link *s,int *x)//出栈函数
{if(empty(s)==1){printf("此栈为空\n");return 0;}else{*x=(s->data)[s->top];s->top--;}return 1;
}int gettop(link *s,int *x)
{if(empty(s)==1){printf("无顶可取\n");return 0;}else{*x=(s->data)[s->top];}return 1;
}void transform(unsigned x)//转换函数
{unsigned y=0;link *s;s=(link *)malloc(sizeof(link));initializa(s);//初始化函数enter(s,'#');//进栈函数,注意这个# 是个字符,要加双引号while(x!=0){enter(s,x%8);x=x/8;}while(1)//存在栈顶元素{gettop(s,&y);//将栈顶元素(也就是最后一个元素)放到y中if(y!='#'){printf("%d",y);out(s,&y);//出栈函数,将最后一个元素剔除}elsebreak;}
}int main()
{unsigned x;//无符号x,也就是不能是负数printf("请输入要转换的十进制数:\t");scanf("%d",&x);printf("十进制转八进制的结果为:\t");transform(x);printf("\n");return 0;
}

运行之后:

十进制转八进制 c语言相关推荐

  1. 顺序栈十进制转八进制C语言,顺序栈实现十进制跟八进制之间的转换

    顺序栈实现十进制和八进制之间的转换 顺序栈实现十进制和八进制之间的转换 (1)首先实现栈的初始化,既申请固定大小的数组空间,存储数据,用到的方法是 int InitStack(  struct  sq ...

  2. c语言计算十进制转八进制,C语言 十进制数转换八进制 算法

    方法一:直接使用控制字符串    %o 八进制%x 方法二: 求余来算,比如求十进制数 x(x>100) 的8进制,先通过 x%8 可以得到个位(末位)上的数,当十进制数等于8时,必然会进位,求 ...

  3. c语言怎么十进制转八进制,C语言:输入一个十进制转化成八进制输出

    2018-06-06 根据输入的年月日,输出该日为该年度的第几周.第几天. //根据输入的年月日,输出该日为该年度的第几周.第几天.星期几. //如输入: 2007,12,1 //则输出: 48z,3 ...

  4. C语言 十进制和八进制相互转换 - C语言零基础入门教程

    目录 一.十进制和八进制区别 1.基数不同 2.有效字符不同 3.用途不同 二.十进制转八进制 三.八进制转十进制 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >& ...

  5. 编程c语言 十进制转八进制_使用C编程语言处理八进制值

    编程c语言 十进制转八进制 Octal value has 8 digit values from 0 to 7, with the base 8. (Read more about Computer ...

  6. C语言十进制,八进制,十六进制输出分析

    C语言可以使用三种数制表示数字,十进制,八进制,十六进制. 八进制以0开头,十六进制以0X或0x开头,即使你使用%d打印,编译器也会认为你输入的是八进制. 比如我们输入020. int x=020; ...

  7. 八进制转换成十进制c语言程序,C语言程序 十进制、八进制、十六进制的相互转化...

    #include #include void main() { //*************************************** // 把十进制转化为十六进制与八进制 //***** ...

  8. 八进制转十六进制c语言程序,C语言程序 十进制、八进制、十六进制的相互转化...

    十进制.八进制.十六进制的相互转化,习题版! #include #include void main() { //*************************************** // ...

  9. C语言十进制转八进制、十六进制以及十六进制转十进制、八进制

    以下程序的输出结果是 main(){ int a=20; printf("%d,%o,%x\n",a,a,a); } 看到这个题目首先我们要明白%o 和 %x代表的是什么意思 %o ...

最新文章

  1. flex Scroller
  2. Unity动画系统经验谈:换装系统与骨骼调节
  3. SpringMVC4返回json
  4. 大型程序是如何开发的_大型小程序如何研发提效
  5. C#LeetCode刷题之#628-三个数的最大乘积( Maximum Product of Three Numbers)
  6. 高中理科不好学计算机,高一理科很差但想学理咋办
  7. 面向过程编程与面向对象编程
  8. 结构体转map[string]interface{}的若干方法
  9. SQL语句BETWEEN
  10. vue-json-editor实现json编辑器并且可以正常输入中文
  11. VMware8安装教程
  12. python fundamental structure_Data Structures and Algorithms in Python
  13. C语言入门-绝对值(abs)
  14. gfsj (logmein)
  15. 第36届福州赛区1009 Squiggly Sudoku 解题报告
  16. Vue进阶(三十六):created() 详解
  17. Scala基础教程--10--数组列表与函数式编程
  18. FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社
  19. 根据物理公式在Unity中实现抛物线运动.2
  20. fixed wideband beamformer

热门文章

  1. tp框架融入短信发送和验证
  2. Zabbix-低级自动发现
  3. nginx实战(二) WebDAV 模块 http_dav_module
  4. SCIEEI1区智能传感器类征稿通知
  5. 用devc++表白_惠院表白墙第423期丨晓看天色暮看云,行也思君,坐也思君
  6. 一文详解常见医学自然语言理解任务和算法
  7. 大数据联合实验室落户青羊区
  8. Linux 命令(243)—— indent 命令
  9. phpcms 多站点配置
  10. WebDriver·TestNg学习日志(Java/Ruby/.Net版)